我的字数计划有什么问题?

时间:2015-11-20 22:28:21

标签: c

尝试创建一个输出用户输入程序的单词数的函数。我用这段代码继续得到2的值,我不知道为什么或哪里出错。如果有人能指出我正确的方向,那将是伟大的。谢谢!

以下是代码:

#include <stdio.h>
#include <string.h>

int wordcount(char string[101]){

int i, words = 0;


for(i=0;string[i] != '\0';i++)
{
    if(string[i] != '\t' && string[i] != '\0'){
        words++;

        while(string[i] != ' ' && string[i] != '\t'  && string[i] !=                       
          '\0')  
      i++;

    }

}
return words;
}




int main (void) {

char input[101];

printf("Word Counter\n");
printf("============\n");

printf("string to be analyzed: \n");
scanf("%100[^\n]", input);

 wordcount(input);

 printf(" %s - words = %i\n", input, wordcount(input));

 }

1 个答案:

答案 0 :(得分:0)

现在的主要问题是有两个。

  1. if(string[i] != '\t' && string[i] != '\0'){恶化,变得更糟

  2. iforwhile中为+1至两次。

  3. 例如,它将如下变化。

    int wordcount(char string[101]){
        int i, words = 0;
    
        for(i=0;string[i] != '\0'; i++){
            if(string[i] != ' ' && string[i] != '\t'){// assuming not included the newline.
                words++;
                i += strcspn(&string[i], " \t") -1;// i point to last character of word
            }
        }
        return words;
    }
    

    i更改它将在一个地方。

    int wordcount(char string[]){
        int i, words = 0;
        char prev =' ';
    
        for(i=0;string[i] != '\0'; i++){
            if(isspace(prev) && !isspace(string[i])){//isspace in <ctype.h>
                words++;//count front edge
            }
            prev = string[i];
        }
        return words;
    }