繁体   English   中英

scanf和strcmp with c string

[英]scanf and strcmp with c string

我找到了一个很好的例子 ,说明如何使用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(“苹果”),它仍然留在循环中并一直问我最喜欢的水果......我猜它与没有写在ans [80]的字符有关。 (我需要它是一个最多80chars的char数组)。 我不是这个......

提前致谢。

Scanf将忽略“\\ n”,因此你应该初始化char fruit[] = "apple" ,因为ans永远不会以'\\ n'结尾。

PS:scanf的解释:任意数量的非空白字符,停在找到的第一个空白字符处。 在存储序列的末尾自动添加终止空字符。

scanf()不会将尾部换行符写入ans strcmp()确实在其比较中考虑了换行符,因此它与您的文字(包括换行符)不匹配。

“scanf”确实将换行符“\\ n”作为输入。 所以你无法使两个字符串相等。 如果你想要两个字符串相等,你需要从第一个字符串中删除换行符“\\ n”(“apple”很好)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM