I am new to C. I am trying to get a lot of text from the user and count the number of words, characters, lines, spaces and letters. This is what I did:
#include <ctype.h> #include <stdio.h> int main(void) { char c = getchar(); char previousc; int charcount = 0; int wordcount = 0; int whitespacecount = 0; int linecount = 0; int lettercount = 0; while(c != EOF) { if(isLetter(c) == 1) lettercount++; if(isWhitespace(c) == 1) { whitespacecount++; if(isWhitespace(previousc) == 0) wordcount++; } if(c == "\n") linecount++; previousc = c; c = getchar(); charcount++; } printf("Character Count: %d\n Word Count: %d\n Whitespace Count: %d\n Letter Count: %d\n Line Count: %d\n", charcount, wordcount, whitespacecount, linecount, lettercount); } int isLetter(char c) // 1 for true, 0 for false. { // instead of writing tons of if's if(isalpha(c) > 0) return 1; return 0; } int isWhitespace(char c) // 1 for true, 0 for false. { if(c == "\n" || c == " " || c == " ") return 1; return 0; }
But I have so many errors and warnings that I just got lost ...
program2.c: In function 'main': program2.c:20: warning: comparison between pointer and integer program2.c: At top level: program2.c:28: error: conflicting types for 'isLetter' program2.c:28: note: an argument type that has a default promotion can't match an empty parameter name list declaration program2.c:14: error: previous implicit declaration of 'isLetter' was here program2.c:35: error: conflicting types for 'isWhitespace' program2.c:35: note: an argument type that has a default promotion can't match an empty parameter name list declaration program2.c:15: error: previous implicit declaration of 'isWhitespace' was here program2.c: In function 'isWhitespace': program2.c:36: warning: comparison between pointer and integer program2.c:36: warning: comparison between pointer and integer program2.c:36: warning: comparison between pointer and integer
I searched for various errors, but did not find solutions that solve my problem.
Can you help me a little?
Thanks.
c
shoham
source share