2011-06-18 42 views
0

由於您沒有從流中讀取,它似乎更加靈活。 這兩個提到,既然你可以很容易地改變讀取的時間/代碼位置,那麼你可以用一個c流(我錯了,你可以使字符串,等流到c FILE *流)?是否有任何理由通過fgets + sscanf使用scanf或fscanf

另外,我不知道我只是覺得有點奇怪scanf。任何優點/缺點scanf將不勝感激。

編輯:我的意思是使用scanf或的fscanf的VS與fgets + sscanf的

回答

2

這在C FAQ中得到很好的解決。

爲什麼大家都說不要使用 scanf?我應該用什麼來代替?

如果從一個值得信賴的文件(不stdin)讀書,有一個在使用fgets + sscanf代替fscanf沒有意義的。確實使用scanf(從stdin讀取)是有問題的。

1

如果你期待一個integer的組合,但你讀floating point或其他一些不兼容的類型,你可以檢查scanf返回值。如果它返回零,那麼你沒有閱讀integer - 但與fgets你不能這樣做。此外,通過檢查scanf的返回值,您可以看到讀取的項目數量。

+0

雖然你可以用sscanf做到這一點。 –

+0

您也可以嘗試嘗試從錯誤的字符串中讀取其他不同類型/簡單模式的次數。我不認爲有一個簡單的方法來做到這一點與scanf。 –

+0

@Roman A. Taycher:那是關於'scanf' over'fgets' – lovesh

相關問題