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

C 为什么我的程序打印的次数比预期的要多?,c,strcmp,C,Strcmp,我有一个程序,它读取文件,逐行遍历,逐行逐字分解。我的问题是,我要将每个单词存储在一个数组中,但我需要使用strcmp函数来验证该单词是否已经存在。总之,下面是我的代码,我的问题是,为什么我的程序要打印出1那么多次?我希望它只打印两次,因为这在我的文本文件中发生了两次 while (fgets(line, sizeof(line), fi) != NULL) { // looping through each line line_count += 1; for (j = 0;

我有一个程序,它读取文件,逐行遍历,逐行逐字分解。我的问题是,我要将每个单词存储在一个数组中,但我需要使用
strcmp
函数来验证该单词是否已经存在。总之,下面是我的代码,我的问题是,为什么我的程序要打印出
1
那么多次?我希望它只打印两次,因为这在我的文本文件中发生了两次

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
    }
}
strcmp()
如果字符串匹配,则返回
0
。您正在检查真实值。您确实需要strcmp(结果,“this”)==0


您还需要使匹配不区分大小写,这通常被称为
stricmp()

在将“strcmp(result,“this”)”更改为“strcmp(result,“this”)”后是否重试?

strcmp(result,“this”)==0是您想要的。您的条件是错误的。每次字符串不匹配时,它都会打印1。
This is the first test.
This is the second test.