计算字符串中的单词

Jul*_*uly 0 c string

while( (ch = fgetc( infile )) != EOF )
    if(ch ==' ') words++;
Run Code Online (Sandbox Code Playgroud)

它工作得很好,但是如果我们在一个字符串中有空行,我们怎么想检测这些行并计算正确的字?

das*_*ght 6

您的代码不计算单词,它会计算空格.在许多情况下,两个计数会有所不同 - 例如,当单词被多个空格分隔时.

当你看到一个属于一个单词的字符时,你需要改变逻辑,你设置一个布尔标志"我在一个单词里面",当它看到一个空白字符(一个空格时,它有以下逻辑)选项卡或换行符):

if (isspace(ch)) {
    if (sawWordFlag) {
        words++;
        sawWordFlag = false;
    }
}
Run Code Online (Sandbox Code Playgroud)

检测角色是否属于单词的一种方法是调用isalnum它.两者isalnumisspace函数都要求您包含<ctype.h>标头.