簡體   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