scanf與gets的深入了解
- scanf函式與gets函式讀取字串的原理
- scanf
- gets
- 修改scanf的默認結束標志來讀取帶空格的字串
在C語言中讀取字串的時候可以用scanf來讀取字串,也可以用gets來讀取字串,那么它們二者之間有什么區別呢?或者說在什么時候該用誰呢?
就讓這篇文章來幫你理清它們的關系吧!
scanf函式與gets函式讀取字串的原理
scanf
scanf的函式原型:int scanf( const char *format [,argument]… );
用scanf函式接受資料(當然也包括字串)時**,默認設定遇到空格 回車 tab鍵(跳格鍵)時停止讀取,同時將對應的空格回車或者tab鍵修改成’\0’來結束一個字串**
也就是說,我們無法對"I AM A SUPERMAN"這樣一個字串完整實作讀取,只能讀取"IAMASUPERMAN"這樣的字串,
gets
gets 的函式原型:char *gets( char *buffer );
fets的原理是從stdin標準輸入流讀取字串,放置到陣列buffer中,當遇到換行符或者 EOF 時,就停止讀取 ,然后將換行符改成’\0’來結束一個字串,因此gets這個函式并不會計算你要讀取的字串的大小,你需要提前設定好陣列的大小所防止陣列越界,
修改scanf的默認結束標志來讀取帶空格的字串
那么在一些OJ在線編程的時候,有時候時用不了gets這個函式的,那么我們如何解決呢?
我們可以使用下面的陳述句來修改scanf的結束標志
char arr[30];
scanf("%[^\n]",arr);
puts(arr);
注意:這里的 \n 是可以修改成其他字符的,如果改成字符a,那么scanf就在讀取到a的時候停止讀取,并將a修改成 \0 來結束一個字串,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/271339.html
標籤:其他
上一篇:中科大大資料考研資訊匯總Q&A
