fgets()
次のようにファイルをスキャンするために使用しています。
char buf[50];
if (fgets(buf, 50, fp) == NULL) {
printf("Error in file parsing.\n");
exit(1);
}
char *p;
p = buf;
p
はバッファを指しており、スキャンした文字列を反復処理するために使用しています。fgets()
サイズは 50 ですが、実際には、スキャンされた文字列の最後にヌル ターミネータが追加されます。
私のwhileループは次のようになりました:
while (*p != '\0')
これは、テキスト ファイルが次の場合に機能しました: 1 + 23
. テキスト ファイルに が含まれ1 + 23 - 5
ていると、無限ループに陥ります。なぜこうなった?
\n
どちらも失敗したかどうかも確認してみました。最後にstrlen
、 for ループを使用して実行しましstrlen
たが、それは正確ではありませんでした。
while ループがどのように見えるべきかについての提案はありますか?