C語言 scanf 和gets 函式的區別

2022-07-07 23:48:17 字數 1346 閱讀 5553

c語言 scanf()和gets()函式的區別

1.相同點:scanf( )函式和gets( )函式都可用於輸入字串

2.不同點:兩者在功能上有所區別,具體區別如下:

要實現如下需求「從控制台輸入字串」有如下兩種實現方式:

1>使用gets()函式實現

char str[100

];printf(

"input a string:\n");

gets(str);

printf(

"%s\n

",str);

使用上訴**實現時,我們會發現控制台列印如下資訊:[即警告gets()是不安全的]

gets()函式總結:

(1)gets() 從標準輸入裝置讀取字串,以回車結束讀取,使用'\0'結尾,回車符'\n'被捨棄沒有遺留在緩衝區。

(2)可以用來輸入帶空格的字串。

(3)可以無限讀取,不會判斷上限,因此使用gets不安全,可能會造成溢位

2>使用scanf()函式實現

char str[100

];printf(

"input a string:\n");

scanf("%s

",str);

printf(

"%s\n

",str);

使用上訴**實現時,我們會發現控制台列印如下資訊:【輸入:hello bjs150940 但是只能輸出:hello】

scanf()函式總結:

(1)scanf() 以 空格 或 回車符 結束讀取,空格 或 回車符 會遺留在緩衝區。

(2)不能直接輸入帶空格的字串。

注意:scanf()函式如何才能輸入帶空格的字串,應使用:【具體**和輸出內容如下:】

scanf("%[^\n]", a);  //%輸入字符集, [^\n] 表示除了'\n'之外的字元都接收,即可以接收空格,這個可以用來輸入帶空格的字串

char str[100

];printf(

"input a string:\n");

scanf(

"%[^\n]

",str);

printf(

"%s\n

",str);

**迴圈輸入乙個字元,怎麼樣才能保證輸入正常呢,僅需新增一句**(取出緩衝區裡特殊的空格和\n即可)即可具體**段如下:

就是這麼簡單,僅僅乙個緩衝區,各種效果,是不是很神奇,哈哈,這就是程式設計的樂趣。。。。奮鬥奮鬥

C語言 gets()和scanf()函式的區別

scanf 函式和gets 函式都可用於輸入字串,但在功能上有區別。若想從鍵盤上輸入字串 hi hello 則應該使用 gets 函式。gets可以接收空格 而scanf遇到空格 回車和tab鍵都會認為輸入結束,所有它不能接收空格。char string 15 gets string 遇到回車認為輸...

C語言 gets()和scanf()函式的區別

scanf 函式和gets 函式都可用於輸入字串,但在功能上有區別。若想從鍵盤上輸入字串 hi hello 則應該使用 gets 函式。gets可以接收空格 而scanf遇到空格 回車和tab鍵都會認為輸入結束,所有它不能接收空格。char string 15 gets string 遇到回車認為輸...

C語言 gets()和scanf()函式的區別

scanf 函式和gets 函式都可用於輸入字串,但在功能上有區別。若想從鍵盤上輸入字串 hi hello 則應該使用 gets 函式。gets可以接收空格 而scanf遇到空格 回車和tab鍵都會認為輸入結束,所有它不能接收空格。char string 15 gets string 遇到回車認為輸...