在C語言中,gets和scanf用來記錄字符串的輸入,而getch和getchar用來接收字符輸入,東西多了就是記不住,免得每次都要去網上翻翻,不如在自己還能記得住的時候做個筆記。
下面只簡單記錄,詳細的可以去網上找:
scanf:它遇到空格、回車和Tab鍵都會認爲輸入結束,所有它不能接收空格。
而gets則只認爲回車符纔是輸入結束。
相同的地方是:在字符串接受結束後都自動加'\0'。
- #include <stdio.h>
- main()
- {
- char ch1[10],ch2[10],c1,c2;
- scanf("%s",ch1);
- c1=getchar();
- gets(ch2);
- c2=getchar();
- }
依次鍵入asdfg回車,asdfg回車,則ch1="asdfg\0",c1='\n',ch2="asdfg\0",c2需輸入。
scanf :當遇到回車,空格和tab鍵會自動在字符串後面添加'\0',但是回車,空格和tab鍵仍會留在輸入的緩衝區中。下次如果調用會直接先拿緩衝區中的數據。
其實也可以清空,編譯器提供了清空緩衝區函數,fflush(stdin);
gets:可接受回車鍵之前輸入的所有字符,並用'\n'替代 '\0'.回車鍵不會留在輸入緩衝區中
其實就是gets函數在讀取字符串時將刪除結尾的換行符。
II:
gets可以用來讀取字符串輸入,scanf可以讀取任何類型的。
III:
getchar:它有一個int型的返回值.當程序調用getchar時.程序就等着用戶按鍵.用戶輸入的字符被存放在鍵盤緩衝區中.直到用戶按回車爲止(回車字符也放在緩衝區中).
getch:只要用戶按一個鍵,getch就立刻返回, getch返回值是用戶輸入的ASCII碼,出錯返回-1.輸入的字符不會回顯在屏幕上.getch函數常用於程序調試中,在調試時,在關鍵位置顯示有關的結果以待查看,然後用getch函數暫停程序運行,當按任意鍵後程序繼續運行.