while(getline (&line, &line_size, f) != -1){}
我正在使用此功能读取线条。但我想知道我什么时候读空白。有人可以帮忙吗?
答案 0 :(得分:3)
因为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");
}
..
}
答案 1 :(得分:0)
您需要定义空行。
另外,因为" 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");
}
...
}