为什么我的程序打印出的次数比预期的多?

时间:2015-01-28 02:00:04

标签: c strcmp

我有一个程序可以读取文件,逐行浏览,然后逐字逐行分解。我的问题是,我将把每个单词存储在一个数组中但是我需要使用strcmp函数来验证这个单词是否已经存在。无论如何,下面是我的代码,我的问题是,为什么我的程序打印1这么多次?我希望它只打印两次,因为this在我的文本文件中出现两次。

while (fgets(line, sizeof(line), fi) != NULL) { // looping through each line

    line_count += 1;

    for (j = 0; j < sizeof(line); j++) { // convert all words to lowercase
        line[j] = tolower(line[j]);
    }

    result = strtok(line, delimiters);

    while (result != NULL) {
        word_count += 1;

        if (strcmp(result, "this")) {
            printf("1\n");
        }

        result = strtok(NULL, delimiters); // get the next token
    }
}

以下是我的文字文件:

This is the first test.
This is the second test.

2 个答案:

答案 0 :(得分:7)

如果字符串匹配,

strcmp()将返回0。你正在检查一个真正的价值。你真的想要strcmp(result, "this") == 0

您还需要使匹配大小写不敏感,通常称为stricmp()

答案 1 :(得分:-1)

你是否在改变后再次尝试&#34; strcmp(结果,&#34;这&#34;)&#34; to&#34; strcmp(结果,&#34;这&#34;)&#34; ?