我正在编写一个程序,该程序将计算行,单词,字符,数字,字母和特殊字符的数量。到目前为止,该程序几乎已经完成,但是特殊字符给我带来了麻烦。我在if语句中使用while循环来计算这些字符,在else语句中使用特殊字符。有人可以指出正确的方向吗?
这是我正在使用的字符串:
欢迎来到CIS158。 C和Tux正在努力工作,是吗? 希望您玩得开心,学习新技能。 既然如此,是时候说了 “学期愉快!”
尝试了else语句,该语句将增加特殊字符。
// Declare a pointer to fopen function to access welcome file
FILE *fp = fopen("/classes/cis158/cntwlc/welcome", "r");
char fileName[100];
char ch;
int lineCount, charCount, wordCount, abcCount, numCount, speCount;
lineCount = 0;
wordCount = 0;
charCount = 0;
abcCount = 0;
numCount = 0;
speCount = 0;
gets(fileName);
//fp = fopen(fileName, "r");
while((ch = getc(fp)) != EOF) {
if(ch == '\n')
lineCount++;
if(ch == ' ' || ch == '\n')
wordCount++;
if(ch != ' ' || ch != '\n')
charCount++;
if((ch >= 'a' && ch <= 'z') || (ch >= 'A' && ch <= 'Z'))
abcCount++;
if(ch >= '0' && ch <= '9')
++numCount;
else
speCount++;
ch++;
}
/*if(charCount > 0) {
++lineCount;
++wordCount;
}*/
printf("--- Text Statistics: ---\n\n");
printf("Lines %d\n", lineCount);
printf("Words %d\n", wordCount);
printf("Characters %d\n", charCount);
printf("Alphabetic %d\n", abcCount);
printf("Digits %d\n", numCount);
printf("Special %d\n", speCount);
getchar();
return 0;
//printf("%20s", &userInput);
}// main
这些是预期的结果:
---文字统计:--- 第5行 字37 字符188 按字母顺序139 位数3 特殊9
这是我运行程序时得到的:
---文字统计:---
第5行 字37 字符188 按字母顺序139 位数3 特殊185
答案 0 :(得分:1)
您的else仅与数字的if匹配。既然发生了这种情况,那么任何不是数字的字符都将计入您的特殊字符数。
我建议以下内容:
// Declare a pointer to fopen function to access welcome file
FILE *fp = fopen("/classes/cis158/cntwlc/welcome", "r");
char fileName[100];
char ch;
int lineCount, charCount, wordCount, abcCount, numCount, speCount;
lineCount = 0;
wordCount = 0;
charCount = 0;
abcCount = 0;
numCount = 0;
speCount = 0;
gets(fileName);
//fp = fopen(fileName, "r");
while((ch = getc(fp)) != EOF) {
if(ch == '\n')
lineCount++;
if(ch == ' ' || ch == '\n')
wordCount++;
if(ch != ' ' || ch != '\n')
charCount++;
if((ch >= 'a' && ch <= 'z') || (ch >= 'A' && ch <= 'Z'))
abcCount++;
else if(ch >= '0' && ch <= '9')
++numCount;
else if(ch != ' ' && ch != '\n')
speCount++;
ch++;
}
/*if(charCount > 0) {
++lineCount;
++wordCount;
}*/
printf("--- Text Statistics: ---\n\n");
printf("Lines %d\n", lineCount);
printf("Words %d\n", wordCount);
printf("Characters %d\n", charCount);
printf("Alphabetic %d\n", abcCount);
printf("Digits %d\n", numCount);
printf("Special %d\n", speCount);
getchar();
return 0;
//printf("%20s", &userInput);
}// main
请注意,您的字数不正确,但我会留给您找出答案。