來自百度經驗(原文區別2不正確,已更正):
C語言中scanf()和用gets()接收字符串的區別_百度經驗http://jingyan.baidu.com/article/ed15cb1b59a87d1be2698172.html
區別1:scanf()可以同時接受多個字符串,而gets()一次只能接受一個字符串。
例如:scanf("%s %s",a,b);就可以同時給a和b兩個字符串指針賦值,getchar就不可以;
區別2:scanf()一定條件下能接受帶空格的字符串,而gets()能接受帶空格的字符串。
scanf("%c",a);函數遇到空格可以識別,但是"%s"格式不可以識別空格和換行,空格或者換行表示字符串輸入的結束;
gets()函數是可以識別空格的;
區別3:scanf()不能接受長度為0的字符串,會自動忽略開頭的所有空格,并且以空格、換行符、回車結束輸入。而gets()能接受長度為0的字符串,不會自動忽略開頭的所有空格或回車,并以回車結束。
補充:scanf()完一個整數后,如果要用gets(),需要先用getchar()接受整數后的換行符
結論:如果要讀入一個帶空格符的字符串時用gets()比較方便, 如非要用scanf(),必須手動給字符串的末尾賦值為'/0',如果不帶空格,那么gets()和scanf()效果是一樣的。
新聞熱點
疑難解答