我在创建将输入注册为单词的函数时遇到麻烦。当前它正在注册单词,但是任何带有'(例如,不会,不会)的单词都显示为2个单词。该程序应从文件中获取输入,对单词计数并显示单词计数和每个单词的平均字母数。
我在代码上玩了一段时间,似乎没有什么能解决问题,但是下面的代码是我所得到的最接近正确的代码。
int main(void) {
int ch, wordCount, wordAverage, letterCount;
bool inword = false;
wordCount = 0;
letterCount = 0;
while ((ch = getchar()) != EOF) {
if (isalpha(ch)) {
letterCount++;
if (!isspace(ch) && (!inword)) {
inword = true;
wordCount++;
}
} else
inword = false;
}
wordAverage = letterCount / wordCount;
printf("The number of words was %d, and the average letters per word was %d.", wordCount, wordAverage);
}
答案 0 :(得分:2)
您正在使用isalpha
while ((ch = getchar()) != EOF) {
if (isalpha(ch)) {
letterCount++;
man page状态isalpha
等效于isupper
|| islower
。
试试:
isalpha(ch) || ispunct(ch)
。