2014-04-19 60 views
0

我正在嘗試從文件中逐行讀取並使用strtok來獲取每個單詞。 但我需要忽略以*開頭的空行或行或只有空格的行。 這是我的代碼:C如何忽略以*開始的行或者只有空格

char line[len]; 
while (fgets(line, sizeof(line), input)) { 
    char* words= strtok(line," "); 
     //MY FIRST TRY TO FIND EMPTY LINES 
    if(strcmp(line," ") == 0){ 
     continue; 
    } 
    int i=0; 
    while(words != NULL){ 
      //MY SECOND TRY TO SKIP EMPTY WORDS 
     while(words[i] == ' ' && words[i] != '\0'){ 
      i++; 
     } 
     if(words[i] != '\0'){ 
      fprintf(output,words); 
     } 
     i=0; 
     words=strtok(NULL," "); 
    } 
} 

這兩個嘗試都失敗了。

+1

'if(strcmp(line,「」)== 0)'沒有找到一個空行,它找到一行有一個空格的行。也許你應該展示一些你輸入的內容。 – hetepeperfan

+0

讓你的生活變得更輕鬆,在做'strtok'之前消除空的,所有的空間和*行。 – Duck

回答

2

你可以把下面的代碼在你while循環的開頭跳過空白字符開頭的行,然後「*」或空白行:

for (i = 0; line[i] && isspace(line[i]); i++) 
    ; 

if (line[i] == '*' || line[i] == '\0') 
    continue; 

注:記得定義i第一,包括<ctype.h>在源文件的開頭。

+0

謝謝!完美的作品! – Michael