while( (ch = fgetc( infile )) != EOF )
if(ch ==' ') words++;
Run Code Online (Sandbox Code Playgroud)
它工作得很好,但是如果我们在一个字符串中有空行,我们怎么想检测这些行并计算正确的字?
您的代码不计算单词,它会计算空格.在许多情况下,两个计数会有所不同 - 例如,当单词被多个空格分隔时.
当你看到一个属于一个单词的字符时,你需要改变逻辑,你设置一个布尔标志"我在一个单词里面",当它看到一个空白字符(一个空格时,它有以下逻辑)选项卡或换行符):
if (isspace(ch)) {
if (sawWordFlag) {
words++;
sawWordFlag = false;
}
}
Run Code Online (Sandbox Code Playgroud)
检测角色是否属于单词的一种方法是调用isalnum它.两者isalnum和isspace函数都要求您包含<ctype.h>标头.