C語言 gets函式

2021-10-04 04:39:13 字數 1404 閱讀 3363

gets函式原型:char *gets(char *str)

功能:從stdio流中讀取字串直到遇到換行符或者eof時停止,並將讀取的結果存放在str指標所指字元陣列中換行符不作為讀取內容 ,讀取的換行符被轉換為null值 並由此結束字元

即:gets函式用來從標準輸入裝置讀取字串直到遇到回車,但是回車不屬於字串

系統自動用』\0』代替換行符作為字串的結束標誌 ==> 所以判斷是否到字串結尾要用』\0』

gets函式可以無限讀取不會判斷上限,所以需要編者自己保證接收的指標所指向的空間足夠大

//輸入一行字元分別統計其中英文本母,空格,數字和其他字元的個數 

#include

#include

#include

main()

printf

("英文本母個數:%d\n數字個數:%d\n空格個數:%d\n其他字元個數:%d\n"

,count1,count2,count3,count4)

;}

注意:在使用字串指標之前要先給字串指標分配空間。

char *str="\0";str就是乙個字串指標可以直接指向乙個字串 

str=(char*)malloc(num*sizeof(char));//給字元指標分配空間,num:分配幾個指定大小的空間

printf("input a string:");

gets(str);

printf("%s\n",str);

gets函式與scanf函式比較

相同點:

不同點:

#include

#include

main()

當用gets函式接收字串時結果如下

【分析】:gets時輸入hh字串按enter鍵得到如上圖結果,由**可知字元變數str2是用來接收緩衝區中字元的,但是顯然此時str2並沒有接收到任何資料,也就是gets函式接收結束後enter之後的回車換行被移走並沒有存在緩衝區中。因為getchar還沒有接收資料上圖顯示程式並沒結束。

當scanf函式接收字串時結果如下圖

【分析】:輸入hh之後按下enter,由上圖可知,enter的換行符並沒有被移走而是放在了緩衝區中(回車:字元13,被作為結束標誌使用』\0』代替了)一次後面的getchar()就會直接讀取緩衝區中的字元10最後由printf函式輸出。

gets函式,C語言gets函式詳解

在前面從鍵盤輸入字串是使用 scanf 和 s。其實還有更簡單的方法,即使用 gets 函式。該函式的原型為 include char gets char str 這個函式很簡單,只有乙個引數。引數型別為 char 型,即 str 可以是乙個字元指標變數名,也可以是乙個字元陣列名。gets 函式的功...

C語言gets 和get s 函式

介紹 gets 可以無限讀取,易發生溢位。如果溢位,多出來的字元將被寫入到堆疊中,這就覆蓋了堆疊原先的內容,破壞乙個或多個不相關變數的值,由於可以無限讀取,所以在2011年12月,ansi 採納了 iso iec 9899 2011 標準,標準中刪除了 gets 函式,使用乙個新的更安全的函式get...

C語言 gets函式

字串簡介 i am a liitle cat 字串通常以字元陣列的形式儲存在計算機中,並且以 0作為字串結束的標誌 通常用來告知計算機內部是字串形式 與 有所不同 例如 m 是以char 型別基礎變數儲存在計算機中,而 m 是以字元陣列的形式儲存在計算機中 字串輸入函式gets gets 函式從標準...