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

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

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語言,關於atof 函式,c語言中atof 和atoi是什麼意思

手機使用者 經我測試,應該是你沒 include stdlib.h 只 include stdio.h 不會報錯,但是atof輸出有問題。但奇怪的是atoi不會出現這個問題。 沒問題啊,給你乙個程式確認一下 include include int main void 輸出結果 string 83.8...

c語言中輸出函式有哪些,C語言中,輸出函式有哪些?

美麗羊光 c語言輸入輸出函式有很多,標準i o函式中包含了如下幾個常用的函式 scanf,printf,getc,putc,getchar,putchar,gets,puts,fgets,fputs,fgetc,fputc,fscanf,fprintf等.int scanf const char f...