2010-11-22 82 views
0

從C程序的文件中讀取下一個非空白(非空格/換行/標籤)字符的最佳(最短)方法是什麼?從文件中讀取下一個非空白字符的最佳方法C

我意識到我大概可以使用gets跟着strtok,但它似乎必須有更簡潔的東西。

如果是這樣,讓我知道;如果沒有,請讓我知道。

謝謝。

+1

切勿使用'gets'。刻錄你從中學到的任何書。 :-) – 2010-11-22 03:21:56

+0

哈哈。我很想去但是我從互聯網上聽說過,我不知道有什麼方法可以燒掉這些人。 :-) – stonea 2010-11-22 03:30:51

+1

的確,火焰似乎只能使它變得更強。 – detly 2010-11-22 03:37:17

回答

5
char c; 
fscanf(f, " %c", &c); 

OR

int c; 
while (isspace(c=fgetc(f))); 
+0

有趣的是,我沒有意識到scanf會以這種方式表現出它的空間。看起來他們有它在這裏的「空白字符」部分記錄:http://www.cplusplus.com/reference/clibrary/cstdio/scanf/。感謝你的回答。 – stonea 2010-11-22 03:29:11

+0

該網站不是有關C庫信息的好來源。例如它說'scanf'返回讀取的字段數量;這是錯誤的。 'scanf'返回已轉換和存儲的字段數,如果使用'*'修飾符來抑制存儲,則會減少字段數。它得到了很多錯誤的案例;您最好獲得C標準(http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1256.pdf)以獲取權威性文檔。 – 2010-11-22 03:38:48

+0

啊,是啊去原來的來源。這很聰明:-)謝謝。只爲你,我打算從該網站打印一些頁面,並在下次我在火附近時將它們燒掉。 – stonea 2010-11-22 03:52:03

0

下一個字符可以使用fgetc來閱讀。既然你無法預知它是否空白,你必須承擔風險並閱讀它。如果結果不是非空白,則可以使用fputc將其放回。

+0

OP *想要*第一個非空白字符,而不是最後一個空白字符,所以'ungetc'(你的意思是說,而不是'fputc'這是非常錯誤的)不需要。 – 2010-11-22 03:20:41

2

另一種可能性是使用scanf("%1s", &c);

+0

+1,聰明的變種。 – 2010-11-22 03:22:27

相關問題