gpt4 book ai didi

c - C 中的 if 语句后 while 循环不继续

转载 作者:行者123 更新时间:2023-11-30 16:29:50 26 4
gpt4 key购买 nike

好吧,我目前遇到的问题是,如果不满足输入“-c”作为第五个参数的条件,则 while 循环在第一个 if 语句之后不会继续。

如果输入 -c,它会正常继续。这可能是一个菜鸟错误,但我不明白为什么即使不满足条件它也不会继续。如果需要,可以提供更多详细信息。

 while(fscanf(file, "%s", word) != EOF)
{
if (strcmp(argv[5], "-c") == 0);
{
// Convert word to lowercase
strlwr(word);
}

//Remove last punctuation character
len = strlen(word);
if (ispunct(word[len - 1]))
word[len - 1] = '\0';

//Check if word exists in list of all distinct words
unique = 1;
for (i=0; i<index && unique; i++)
{
if(strcmp(words[i], word) == 0)
unique = 0;
}

//If word is unique then add it to distinct words list
//And increment index. Otherwise increment occurrence
// count of current word.
if(unique)
{
strcpy(words[index], word);
counter[index]++;

index++;
}

else
{
counter[i - 1]++;
}
}

最佳答案

这行代码有两个错误:

if (strcmp(argv[5], "-c") == 0);

首先,您要以分号结束 if,因此它会测试第五个参数是“-c”,但随后它会以任一方式运行下一个 block 。

如果您没有输入 -c 作为第五个参数,您可能只有四个参数,在这种情况下第五个参数将为 NULL。 (或者你可能少于四个,在这种情况下没有第五个参数根本没有。)将 NULL 传递给 strcmp 是未定义的行为。所以,你需要在测试 argv[5] 之前检查 argv >= 5

关于c - C 中的 if 语句后 while 循环不继续,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51576477/

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