C如何忽略以*开头的行或仅为空格的行

时间:2014-04-19 15:58:20

标签: c

我试图从一个文件中逐行读取并使用strtok来获取每个单词。 但我需要忽略以*开头的空行或行或仅包含空格的行。 这是我的代码:

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 个答案:

答案 0 :(得分:2)

您可以将以下代码放在while循环的开头,以跳过以空白字符开头的行,然后是'*'或空行:

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

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

注意:请记住首先定义i并在源文件的开头包含<ctype.h>