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"); } ... }