簡體   English   中英

使用getchar讀取整數輸入時出現意外的putchar輸出

[英]Unexpected putchar output when reading integer input with getchar

我正在完成這個計划:

#include<stdio.h>

main()
{
 int c;

 c = getchar();

 while(c != EOF) {
   putchar(c);
   c = getchar();
  }
}

由於變量c是整數,它應該存儲給定輸入的整數等價值。 輸出顯示'a'打印為'a''b'打印為'a' 'b''c'打印為'a' 'c'但是,當我輸入值65 ,輸出也是65 因此,值65和char'a 'a'的存儲格式必定存在一些差異

這兩個價值如何相互區別?

這是因為輸入65被視為兩個不同的字符輸入,程序正在按順序打印它們。

當你輸入6 ,程序立即讀取它並檢查它不是EOF ,所以它將它打印到控制台。 然后,當您輸入5 ,它再次將其作為輸入。 由於這也不是EOF ,您的程序將再次打印它。

所以你輸入兩個字符,這個程序正確地將它打印到控制台,就像它應該做的那樣。 除此之外,沒有歧視。 a等價的整數等於65,所以如果你打印一個像這樣的字符,它將打印65 -

 char c = 'a';
 printf("%d", c);    // will print 65

這將打印a -

int i = 65;
printf("%c", i);    // will print a

您的代碼完全按照書面執行,但是,您對程序輸入的理解存在困惑。

鍵入65它被解釋為兩個類型字符,即'6''5' 正如您所注意到的,每次在while循環中調用putchar(c)時,這就是回顯到控制台的內容。

不,65和'a'的存儲沒有區別。 將這些中的任何一個分配給變量會產生完全相同的結果。 差異僅與char的輸入和輸出有關。 例如printf(“%c”,65)產生'a',因為這是printf()定義的一部分。 對於您提到的其他兩個函數putchar()getchar()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM