// Count number of words in a line. #include <stdio.h> #include <string.h> #include <stdlib.h> #include <stdbool.h> #include <ctype.h> #define LINE_LEN 100 int count(const char * const s); bool acceptable_char(int ch); bool ignore_ch(int ch); int main(void) { char words[LINE_LEN+1]= {'\0'}; int words_count=0; do { printf("Enter a line(just enter to exit):"); char * wo = NULL; wo = fgets(words,LINE_LEN-1,stdin); if(wo == NULL) { fprintf(stderr,"fgets failed.\n"); exit (EXIT_FAILURE); } //printf("words:%s\n",words); words_count=count(words); printf("Words count is: %d\n\n",words_count); } while(words[0]!='\n'); printf("Finished.\n"); return EXIT_SUCCESS; } int count(const char * const s) { unsigned idx=1; int cnt; if(ignore_ch(s[0]) ) cnt=0; else { for(cnt=0; s[idx]!='\0'; idx++) { if(isspace(s[idx]) && acceptable_char(s[idx-1])) cnt++; } } return cnt; } bool acceptable_char(int ch) { bool r; if(isalpha(ch) || isdigit(ch))// isalnum r=true; else r=false; return r; } bool ignore_ch(int ch) { bool r; if(ch=='\0' || ch=='\n' || ch==EOF) r=true; else r=false; return r; }