gpt4 book ai didi

c - strcmp 不工作,所以即使 strcmp 中的两个字符串变得相等,程序也不会跳出 for 循环

转载 作者:太空宇宙 更新时间:2023-11-04 08:54:41 27 4
gpt4 key购买 nike

虽然 word 和 s2 相同,但是 if(strcmp) 语句没有被执行。错在哪里??我检查了从文件中读取的代码并尝试了“printf”以查看 word 和 s2 是否相同,发现它们在大约 10 次迭代后变得相同并且应该在那时中断但程序执行直到我是小于零。

请帮忙。提前致谢。P.S "words.txt"是fedora操作系统自带的字典文件

#include<stdio.h>
#include<string.h>
int main(int argc,char *argv[])
{
FILE *ptr;
ptr=fopen("./words.txt","r");
char word[40];
char ch;
int i=70,j=0;
char s2[] = "2";
while(i>0){
while (ch!='\n') {
ch=fgetc(ptr);
word[j]=ch;
j++;
}
word[j]='\0';
if(strcmp(s2,word) == 0){
break;
}
j=0;
if(ch=='\n'){
ch=fgetc(ptr);
word[j]=ch;
j++;
}
i--;
}
fclose(ptr);
return 0;
}

最佳答案

您在初始化变量值之前使用变量:

while (ch != '\n') {

因为 ch 的初始值未知,所以任何事情都有可能发生。然而,表达式最初为真的可能性很高(256 次机会中的 255 次)。进入循环一次后,一切正常。

为了使循环按预期工作,不要将 \n 存储在缓冲区中。由于 s2 不包含 \n,只要换行符存储在那里,strcmp() 就永远不会匹配。

关于c - strcmp 不工作,所以即使 strcmp 中的两个字符串变得相等,程序也不会跳出 for 循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17864110/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com