改行文字を確認します。
size_t len = 0;
// ... your code using fgets
len = strlen(line);
if ((len > 0) && (line[len - 1] == '\n'))
// your input contains the newline
通話後、次のfgets
場合、回線の最後に改行がない場合があります。
- 改行がスキャンされる前に文字数制限に達しました-あなたの場合、これは
LENGTH_LINE
です。
EOF
改行の前にファイルの終わり( )に達しました。
- 読み取りエラーが発生しましたが、エラーが発生した場合は、
line
使用できない内容を検討してください。
ファイルの終わりまたは読み取りエラー時に:returnsfgets
を処理できるように、からの戻り値を確認する必要があります。を使用して、ファイルの終わりを確認できます。EOF
fgets
NULL
feof
をチェックして、エラーfeof
なしで入力の最後にいるfgets
ことがわかっている場合は、最終行に改行文字がなくても、行全体を読んだことがわかります。
何らかの理由で、それぞれline
を終了する改行文字が必要な場合は、自分で追加できます。
// you've checked for EOF and know this is your final line:
len = strlen(line);
if (line[len-1] == '\n')
printf("I've a line");
else if ((len + 1) < LENGTH_LINE)
{
line[len] = '\n';
line[len + 1] = '\0';
}
else
// no room in your line buffer for an add'l character