c語言中gets函式和是scanf函式有什麼區別呢

時間 2021-08-30 09:05:37

1樓:匿名使用者

一、指代不同

1、scanf:是c語言中的一個輸入函式。

2、gets:從標準輸入裝置讀字串函式。

二、讀取方式不同

1、scanf:是格式輸入函式,即按使用者指定的格式從鍵盤上把資料輸入到指定的變數之中。

2、gets:可以無限讀取,不會判斷上限,以回車結束讀取,所以程式設計師應該確保buffer的空間足夠大,以便在執行讀操作時不發生溢位。

三、資料流向不同

2、gets:從stdin流中讀取字串,直至接受到換行符或eof時停止,並將讀取的結果存放在buffer指標所指向的字元陣列中。換行符不作為讀取串的內容,讀取的換行符被轉換為‘\0’空字元,並由此來結束字串。

2樓:忠實誠信

是不是這**前面還有什麼輸入語句,反正在我電腦上執行結果一樣.

gets與scanf的區別是gets一次讀一行,scanf遇到空格回車結束!

3樓:風若遠去何人留

都是從輸入流中讀取資料,但功能有很大差別:

1 操作型別不同。

gets函式僅用於讀入字串。

scanf為格式化輸出函式,可以讀入任意c語言基礎型別的變數值,而不是僅限於字串(char*)型別。

2 截止字元不同。

gets函式固定的以換行符作為結尾,遇到換行符時結束輸入。

scanf函式預設以空白函式結尾,同時可以對截止函式進行修改。

3 對截止字元處理不同。

gets函式會讀入截止字元\n, 同時將\n自動替換為\0.

scanf遇到截止字元時不會繼續讀取,截止字元將儲存於輸入緩衝中。

4 返回值型別不同。

gets的返回值為char*型,當讀入成功時會返回輸入的字串指標地址,出錯時返回null。

scanf返回值為int型,返回實際成功賦值的變數個數,當遇到檔案結尾標識時返回eof。

4樓:蘇小木偶

gets()函式的話會連zhanghao後面的回車也當做字元輸入了,對比的話肯定就是跟zhanghao不一樣;

5樓:古韻青花

gets函式和scanf函式都可以作為字串的輸入函式,

相同點:都是將從鍵盤輸入的字串存入陣列中,輸入完成後要以回車來結束輸入。

不同點:利用sanf時,在輸入過程中碰到空格時系統認為輸入結束,並將空格之前的字元作為有效字元存入陣列中,並在尾部追加\0作為結束標誌。利用gets時,空格符被看作是有效字元,也就是說只有碰到回車符時系統才認為輸入結束。

6樓:小羊裝狼

zhanghao = gets();是不是應該這樣

c語言中清屏函式是什麼,C語言中清屏函式是什麼?

莊生曉夢 c語言中清屏函式是為清除螢幕上的輸出功能,用法是 void clrscr void 程式例 include int main int i clrscr for i 0 i 20 i cprintf d r n i cprintf r npress any key to clear scre...

c語言中,函式返回值怎麼用,c語言中呼叫函式如何返回多個值?

斑駁丶4129仉 一般用0表示函式執行正確,正常返回 用負數表示函式執行出錯,每個值可以提前定義,根據出錯的值進行出錯處理。誠心為您解答每一個問題!如您滿意請採納最佳!如有疑問請繼續追問!您的好評是我們前進的動力,相互幫助,一起進步! return後接一個值。在呼叫這個函式的函式裡面,呼叫它的時候希...

C語言中的sprint函式問題,C語言中迴圈問題

好程式設計師 sprintf函式原型為 int sprintf char str,const char format,作用是格式化字串,具體功能如下所示 1 將數字變數轉換為字串。2 得到整型變數的16進位制和8進位制字串。3 連線多個字串。舉例如下所示 1 char str 256 2 int d...