2012-03-10 77 views
0

我試圖編寫將每行的第一個字作爲命令註冊的代碼,但我希望能夠讀取該字,而不管前面有空格還是不在前面它。我目前使用fgets()和strncmp每行的前x個字符來做到這一點,但它不適用於任意數量的空白。我曾嘗試在fgets()循環內使用sscanf()將每行的第一個單詞存儲到一個變量中,但它似乎正在跳過行並錯誤地讀取它們。我寧願不發佈的代碼,因爲它是相當長,但它基本上是這樣的:在C中讀取輸入文件時忽略空白字段

while(fgets(Line, BUFFER, input) != NULL) 
{ 
if(strncmp(Line, "Word", 4) != NULL) 
//DO SOMETHING 
} 

有許多strncmps,我想爲他們每個人無視前面的空間任意數量。

回答

3

您可以使用isspace跳過空白:

#include <ctype.h> 

while(fgets(Line, BUFFER, input) != NULL) 
{ 
    char *p = Line; 
    while (isspace(*p)) // skip whitespace 
    p++; 
    if(strncmp(p, "Word", 4) != NULL) 
    //DO SOMETHING 
} 
+0

我不知道,如果只是增加線可能是什麼呢?我得到一個錯誤左值需要作爲增量操作數。 – John 2012-03-10 02:08:26

+0

@Corey,已更新 – perreal 2012-03-10 02:10:09

+0

我已經呆了很長時間了。我實際上已經遇到了這個功能,但顯然做了一個簡單的錯誤,試圖實施和解散它。非常感謝。這真的很完美。 – John 2012-03-10 02:15:42