由於您沒有從流中讀取,它似乎更加靈活。 這兩個提到,既然你可以很容易地改變讀取的時間/代碼位置,那麼你可以用一個c流(我錯了,你可以使字符串,等流到c FILE *
流)?是否有任何理由通過fgets + sscanf使用scanf或fscanf
另外,我不知道我只是覺得有點奇怪scanf
。任何優點/缺點scanf
將不勝感激。
編輯:我的意思是使用scanf或的fscanf的VS與fgets + sscanf的
由於您沒有從流中讀取,它似乎更加靈活。 這兩個提到,既然你可以很容易地改變讀取的時間/代碼位置,那麼你可以用一個c流(我錯了,你可以使字符串,等流到c FILE *
流)?是否有任何理由通過fgets + sscanf使用scanf或fscanf
另外,我不知道我只是覺得有點奇怪scanf
。任何優點/缺點scanf
將不勝感激。
編輯:我的意思是使用scanf或的fscanf的VS與fgets + sscanf的
這在C FAQ中得到很好的解決。
爲什麼大家都說不要使用 scanf?我應該用什麼來代替?
如果從一個值得信賴的文件(不stdin
)讀書,有一個在使用fgets + sscanf
代替fscanf
沒有意義的。確實使用scanf
(從stdin
讀取)是有問題的。
如果你期待一個integer
的組合,但你讀floating point
或其他一些不兼容的類型,你可以檢查scanf
返回值。如果它返回零,那麼你沒有閱讀integer
- 但與fgets
你不能這樣做。此外,通過檢查scanf
的返回值,您可以看到讀取的項目數量。
雖然你可以用sscanf做到這一點。 –
您也可以嘗試嘗試從錯誤的字符串中讀取其他不同類型/簡單模式的次數。我不認爲有一個簡單的方法來做到這一點與scanf。 –
@Roman A. Taycher:那是關於'scanf' over'fgets' – lovesh