I have written the following code to count the number of words, uppercase/lowercase letters, punctuation, and digits. The only problem I am having is counting the last word. Any suggestions? Do I need something after the loop?
Code:
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#include <string.h>
#define SIZE 80
int main(void)
{
char s[SIZE];
int sl;
int p;
int QW=0;
int QUL=0;
int QLL=0;
int QP=0;
int QD=0;
printf("This program will request and store a string of characters\n");
printf("and then report:\n");
printf(" Number of Words.\n");
printf(" Number of uppercase letters.\n");
printf(" Number of lowercase letters.\n");
printf(" Number of punctuation characters.\n");
printf(" Number of digits.\n\n");
fflush(stdin); /* Flush Keyboard Buffer */
printf("On the line below, enter the string that should be analyzed:\n");
printf("\n> ");
fgets(s, SIZE, stdin);
if(s[strlen(s) - 1] == '\n')
s[strlen(s) - 1] = '\0';
sl = strlen(s);
for(p=0; p < sl; p++)
if(s[p] != '\0')
{
if(isupper(s[p]))
QUL = QUL + 1;
else if(islower(s[p]))
QLL = QLL + 1;
else if(isdigit(s[p]))
QD = QD + 1;
else if(ispunct(s[p]))
QP = QP + 1;
else if(isspace(s[p]))
QW = QW + 1;
}
printf("\nRESULTS:\n\n");
printf("Number of words: %d\n", QW);
printf("Number of uppercase letters: %d\n", QUL);
printf("Number of lowercase letters: %d\n", QLL);
printf("Number of punctuation characters: %d\n", QP);
printf("Number of digits: %d\n", QD);
fflush(stdin);
getchar();
return(0);
}
Thanks.