c getline跳过空白行

while(getline (&line, &line_size, f) != -1){} 

我正在使用此function读取线条。 但我想知道我什么时候读一个空行。 有人可以帮忙吗?

因为H2CO3已经提到过你可以使用行长:

 while (getline (&line, &line_size, f) != -1) { if (strlen(line) == 1) { printf("H2CO3 spotted a blank line\n"); } /* or alternatively */ if ('\n' == line[0]) { printf("Ed Heal also spotted the blank line\n"); } .. } 

您需要定义空行。

此外,因为“getline函数从流中读取整行,直到并包括下一个换行符。”

我不认为

 strlen(line) == 1 

是可移植的,因为Win / DOS和Unix使用不同的EOL约定。 此外,EOF可能在EOL角色完成之前发生。 所以真的,你需要定义一个类似的函数

 int is_blank_line(char *line, int line_size) { return line_size == 0 || is_eol(line) } 

其中is_eol是为您所在的平台定义的。 这是你可以放在空白处的空白行等等。

所以你会得到类似的东西:

 int is_eol(char *line) { ... return result; } ... int is_blank_line(char *line, int line_size) { return line_size == 0 || is_eol(line) } ... while (getline (&line, &line_size, f) != -1) { if (is_blank_line(line, line_size)) { printf("blank line spotted\n"); } ... }