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,回車都結束;