小写和大写字母,特殊字符和数字正常工作。 该程序无法正确计算总字符数和空格数。 我应该添加什么来使这项工作?感谢您的帮助!
#include<stdio.h>
#include<string.h>
#include <ctype.h>
#include<conio.h>
main(){
char cMessage[100];
int cChar,cLow=0, cUp=0, cSpec=0, cSpace=0, cNum=0;
printf("Enter your message: ");
scanf("%s", cMessage);
int x=0;
while(x<strlen(cMessage)){
printf("%c",cMessage[x]);
cChar++;
if(islower(cMessage[x])){ cLow++;}
else if(isupper(cMessage[x])){ cUp++;}
else if(cMessage[x] == ' '){ cSpace++; }
else if(isdigit(cMessage[x])){ cNum++; }
else{ cSpec++;
}
x++;
}
printf("\nTotal Characters: %d", cChar);
printf("\nTotal Lowercase Letters: %d", cLow);
printf("\nTotal Uppercase Letters: %d", cUp);
printf("\nTotal Special Characters: %d", cSpec);
printf("\nTotal Spaces: %d", cSpace);
printf("\nTotal Numbers: %d", cNum);
getch();
}
答案 0 :(得分:3)
该程序无法正确计算总字符数和空格数吗?一个原因是语句scanf("%s", cMessage);
无法读取空格或读取空间。如果您想使用空格阅读cMessage
,请使用fgets()
。
fgets(cMessage,sizeof(cMessage),stdin);/* use fgets() instead of scanf() */
或者你可以像这样使用scanf()
scanf("%[^\n]", cMessage);/* it read the whitespaces also */
阅读fgets()
https://linux.die.net/man/3/fgets