我有一个代码来从文件输入中读取一行。我的目标是如果一行是空白(或者是\ n \ t或空格),跳过该行并继续到下一行。我这样做有问题。如果该行仅是"输入键[\ n]"我的代码有效,但是,如果该行只包含\ t(制表符)或空格,则它不起作用。这是代码。有人可以帮助我如何忽略该行是否完全是空格?谢谢
while(!feof(input)){
fgets(word,1000,input);
if((strcmp(word,"\n")==0) || (strcmp(word,"\t\n")==0) || (strcmp(word," \n")==0)){
continue;
}
答案 0 :(得分:2)
您可以在循环中使用isspace()
:
int is_whitespace(char *word) {
size_t spaces = 0;
size_t i = 0;
size_t slen = strlen(word);
for (i = 0; i< slen; i++)
if ( isspace((int)word[i]) ) spaces++;
return spaces == slen;
}
然后你就可以:
while( fgets(word,1000,input) ) {
if (is_whitespace(word))
continue;
}
此外,循环条件错误。见Why is “while ( !feof (file) )” always wrong?
正如@chux所说,它可以简化,并且可以避免对strlen()
的调用:
int is_whitespace(char *word) {
while (isspace((unsigned char) *word))
word++;
return *word == 0;
}
答案 1 :(得分:1)
char ch;
if(1 != sscanf(word, " %c", &ch)){
continue;
}