I'm trying to write a program that takes from the standard input stream a sentence, and based on the definition that a word is everything that is between "spaces"; "spaces" being the space character, tab character or newline character, so, for example, if the input stream is hey there this is some test
, the output should be
hey
there
this
is
some
test
Here is my try:
#include <stdio.h>
#define TRUE 1
#define FALSE 0
#define IS_SPACE(c) ((c) == ' ' || (c) == '\t' || (c) == '\n')
int main() {
for(int c, inWord = FALSE; (c = getchar()) != EOF;)
if(!IS_SPACE(c)) {
putchar(c);
inWord = TRUE;
}
else if(inWord) {
putchar('\n');
inWord = FALSE;
}
return 0;
}
But I don't like this approach because I am manually entering TRUE and FALSE to inWord
when it can be automatically be done by inWord = !IS_SPACE(c)
, but I don't know how to modify the code to make just one call to IS_SPACE
without creating another temporal variable.