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...