while(getline (&line, &line_size, f) != -1){}
この関数を使用して行行を読み取ります。しかし、空白行を読んでいるときを知りたいです。誰か助けてくれませんか?
したがって、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 に異なる規則を使用するため、移植可能です。また、EOL 文字が完了する前に EOF が発生する場合もあります。本当に、おそらく次のような関数を定義する必要があります
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");
}
...
}