为什么我的程序打印出的次数比预期的多?
Why is my program printing out more times than expected?
我有一个程序可以读入一个文件,逐行检查,然后逐字分解。我的问题是,我要将每个单词存储在一个数组中,但我需要使用 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.
strcmp()
returns 0
如果字符串匹配。您正在检查真实值。你真的想要 strcmp(result, "this") == 0
.
您还需要使匹配不区分大小写,通常称为 stricmp()
。
将 "strcmp(result, "this")" 改为 "strcmp(result, "This")" 后重试吗?
我有一个程序可以读入一个文件,逐行检查,然后逐字分解。我的问题是,我要将每个单词存储在一个数组中,但我需要使用 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.
strcmp()
returns 0
如果字符串匹配。您正在检查真实值。你真的想要 strcmp(result, "this") == 0
.
您还需要使匹配不区分大小写,通常称为 stricmp()
。
将 "strcmp(result, "this")" 改为 "strcmp(result, "This")" 后重试吗?