[英]How do I count the number of special characters in a string?
我正在編寫一個程序,該程序將計算行,單詞,字符,數字,字母和特殊字符的數量。 到目前為止,該程序幾乎已經完成,但是特殊字符給我帶來了麻煩。 我在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個
您的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
請注意,您的字數統計有誤,但我會留給您找出答案。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.