"Write a program to copy its input to its output, replacing each string of one or more blanks by a single blank."
I'm assuming by this he means input something like...
We(blank)(blank)(blank)go(blank)to(blank)(blank)(blank)the(blank)mall!
... and output it like:
We(blank)go(blank)to(blank)the(blank)mall!
This is probably easier than I'm making it out to be, but still, I can't seem to figure it out. I don't really want the code... more so pseudo code.
Also, how should I be looking at this? I'm pretty sure whatever program I write is going to need at least one variable
, a while
loop, a couple if
statements, and will use both the getchar()
and putchar()
functions... but besides that I'm at a loss. I don't really have a programmers train of thought yet, so if you could give me some advice as to how I should be looking at "problems" in general that'd be awesome.
(And please don't bring up else
, I haven't got that far in the book so right now that's out of my scope.)
First declare two variables character and last_character as integers.when you have not reach the end of the file( while(character=getchar() != EOF ) do this; 1. If character != ' ' then print character last_character = character 2. If character == ' ' if last_character ==' ' last character = character else print character
Since relational operators in C produce integer values 1 or 0 (as explained earlier in the book), the logical expression "current character non-blank or previous character non-blank" can be simulated with integer arithmetic resulting in a shorter (if somewhat cryptic) code:
Variable
p
is initialized withEOF
so that it has a valid non-blank value during the very first comparison.a way to make it easier for the new people are stuck on this book (by not knowing any thing then what brought up until page 22 in K&R).
credits to @Michael , @Mat and @Matthew to help me to understand
I hope this will help.