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 函式從標準...