我對Quora的閱讀this問題和閱讀,谷歌問這個問題在採訪中,差異BTW得到和scanf(「%S」),函數getline
哪些功能之間的區別: scanf(「%s」),獲取和獲取
任何人都可以提供詳盡的列表和他們的解釋。
我對Quora的閱讀this問題和閱讀,谷歌問這個問題在採訪中,差異BTW得到和scanf(「%S」),函數getline
哪些功能之間的區別: scanf(「%s」),獲取和獲取
任何人都可以提供詳盡的列表和他們的解釋。
scanf("%s", &buffer);
在輸入中讀取下一個令牌(任何空格/行結束/製表符將結束令牌)並將其存儲在char *buffer
中。您應該使用最大大小的格式進行緩衝,例如使用char buffer[10]
時,應該使用scanf("%9s", buffer);
來讀取最多9個字符。
gets()
已過時,請勿使用它。它讀取完整的行,不管它的大小如何,所以如果一個具有管理特權的程序使用這樣一個糟糕的功能,它可以被黑客用來穿透系統。這曾經是一種常見的黑客手段。請改爲使用fgets()
,它會使用緩衝區大小的參數。 fgets(buffer, 10, stdin);
與我之前的例子。請注意,如果該行不超過8個字符,則\n
將包含在緩衝區中。
getline()
更具體,因爲我知道它只是一個c++
函數。
['getline' available in C](http:// man7 .org/linux/man-pages/man3/getline.3.html),雖然它不是標準C.它是一個POSIX.1-2008函數 –
http://stackoverflow.com/questions/314401/how-to-read-a-line-from-the-console-in-c –