1. 程式人生 > >getchar和scanf的區別

getchar和scanf的區別

scanf可以一次按照設定的輸入格式輸入多個變數資料.如
int d,
float f,
char str[20],

scanf("%d%f%s",d,f,str);

例: 使用 scanf 輸入  42

scanf()中使用%c說明符,該函式將只讀取字元4 並將其儲存在一個char型別的變數中

如果使用%s說明符,該函式會讀取兩個字元,即字元4和字元2,並將它們儲存在一個字串中。

如果使用%d說明符,則scanf 讀取同樣的兩個字元,但是隨後它會繼續計算與它們的相應的整數值為4*10+2  得到 42;

然後將該整數的二進位制表示儲存在一個int變數中,

如果使用%f說明符 則scanf()讀取這兩個字元 計算它們對應的數值 42,然後以內部的浮點表述該值,並將結果儲存在一個float變數中

簡而言之 輸入由字元組成,scanf可以將輸入裝換成整數或浮點值。使用%d或%f這樣的說明符能限制可接受的輸入的字元型別,

但是getchar()和使用%c的scanf()接受同樣的任何字元;

getchar()只能輸入字元型,輸入時遇到回車鍵才從緩衝區依次提取字元.

如char ch;
ch=getchar();輸入abc\r(回車)
ch=a;
用在迴圈時也要等有回車鍵時才接收.

char ch;
while((ch=getchar())!='q'){
printf("%c ",ch);

這樣你可以輸入很多字元後再按回車.
不用一個個按回輸出,還是全部一起輸出到螢幕