我找到了一个不错的 example关于如何使用 strcmp,但它只适用于 fgets(),我需要使其适用于 scanf。所以,这是代码:
int main(void) {
char fruit[] = "apple\n";
char ans[80];
do {
printf ("Guess my favorite fruit? ");
scanf ("%s",ans);
} while (strcmp (fruit, ans) != 0);
puts ("Correct answer!");
return 0;
}
即使我写了正确的 answear(“apple”),它仍然在循环中并不断问我最喜欢的水果是什么......我猜它与未写在 ans 的字符有关[80](我需要它是一个最多 80 个字符的字符数组)。我没听懂...
提前致谢。
最佳答案
Scanf 会忽略“\n”,所以你应该初始化 char fruit[] = "apple"
,因为 ans 永远不会以 '\n' 结尾。
P.S:scanf 的解释:任意数量的非空白字符,在找到的第一个空白字符处停止。在存储序列的末尾自动添加终止空字符。
关于c - 带有 C 字符串的 scanf 和 strcmp,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20792246/