0
//declare double pointer so that create array can "return" an array
int **aryReturn;
int size;
char trashdata[100];

//open file
FILE *inFilePtr = fopen(*(argv + 1), "r" );

if (inFilePtr != NULL)
    printf(" the value of argv 1 is %s \n", argv[1]); 

while (fgets(trashdata, sizeof(int) * 10, inFilePtr) != NULL){
    fgets(trashdata, 10, inFilePtr);
    size++;
}

私のループ条件がうまくいかない理由を誰か教えてください! fgets で fp(0x0) というセグ フォールトが発生します。私が試してみました

while (!feof(inFilePtr))

基本的に同じエラーが発生しますが、feof が問題であると表示されます。

if ステートメントが出力され、argv に予期されるファイル名が含まれているため、ファイルが正しく開いているように見えます。

4

2 に答える 2

1

うーん、いくつかの問題が見えます...

  • size初期化されていません
  • gets()連続して 2 回呼び出すのは奇妙に思えます。feof()
  • fopen()結果を NULL に対してテストした後、何もしていないため、最初の結果gets()がその理由で爆発する可能性があります...そのメッセージが表示されますか?

例外をスローする可能性が高いのは最後のことだけですが、私の哲学は常に既知の問題を修正して再テストすることです...バグ間の相互作用を予測するのは時間の無駄です.

于 2013-02-12T01:53:54.060 に答える