天天看點

c語言getline與gets,C/C++之鍵盤輸入函數(scanf、gets、getchar、getline、cin、cin.get())...

1. scanf函數

scanf()可以接收多種格式的資料,遇到回車,tab,空格時,輸入結束;

scanf()保留回車符号,當連續兩次調用scanf時,會直接讀入上一次結束scanf時的回車符号“\n”  (0x0a);   沒有将Enter鍵屏蔽

#include #include #include #include

using namespacestd;

int main(int argc, char**argv)

{

char buf[100];

scanf("%s", buf);

printf("first input:%s\n", buf);

charret;

scanf("%c", &ret);

printf("second input:0x%x\n", ret);

return 0;

}

執行後:

test

first input:test

second input:0xa

再次scanf的時候,讀取出來一個回車符('\n')(0x0a);

當輸入字元串中帶有空格時:

test space //輸入帶有空格的字元串

first input:test

second input:space

此時隻提示輸入一次,第二次執行scanf時候,直接讀取空格之後的字元串;

2.gets()

函數原型:char *gets(char *string)

1.和scanf類似,但是遇到空格、Tab時,不會結束寫入,僅當遇到回車時結束寫入;

2.将Enter鍵屏蔽,再次調用scanf函數時,不會讀取到Enter鍵

#include #include #include #include

using namespacestd;

int main(int argc, char**argv)

{

char buf[100];

gets(buf);

printf("first input:%s\n", buf);

chartest;

scanf("%c", &test);

printf("second input:0x%x\n", test);

return 0;

}

運作結果:

tttt  //鍵入無空格字元串

first input:tttt

yyyyy

second input:0x79  //此時不是0x0a,表示再次讀取到的字元不是回車符,second input:y

鍵入帶有空格的字元串運作結果:

tttt yyyy    //鍵入有空格的字元串

first input:tttt yyyy  //列印正常

uuuuuu

second input:0x75  //由于gets屏蔽了Enter鍵,導緻這裡擷取的不是"\n"second input:u

3.getchar()

僅僅傳回鍵入的第一個字元,不會屏蔽回車符;

鍵入字元大于1時,再次擷取時,會繼續讀取剩餘的字元;

#include #include #include #include

using namespacestd;

int main(int argc, char**argv)

{

chartest;

test =getchar();

printf("first input:%c\n", test);

test =getchar();

printf("second input:0x%x\n", test);

return 0;

}

鍵入一個字元,執行結果:

t      //鍵入一個字元,再次getchar時,讀入到的是回車符;

first input:t

second input:0xa

鍵入多個字元時,執行結果:

tyt

first input:t

second input:0x79  //鍵入多個字元時,再次getchar時,直接讀入剩餘的字元;second input:y

以上是C語言中的輸入函數;

----------------------------------------以下是C++鍵入函數----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

1. cin

和scanf一樣,遇到空格,Tab,回車都結束;