0

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 ループがどのように見えるべきかについての提案はありますか?

4

1 に答える 1

1

次のように繰り返してみませんか。

int i, buflen;
buflen = strlen(buf);
for(i=0; i<buflen; i++) {
   // your code on buf[i]
}
于 2012-07-17T09:26:00.463 に答える