0

fprintf の問題をデバッグしています。皆さんが私にアドバイスをくれたり、単純な問題であってもそれを特定するのを手伝ってくれることを願っていました. 私のコードは次のとおりです。

        while(fgets(buffer, 500, filep) != NULL){
        //printf("%d\n", i);
        strcpy(result, buffer);
        result = strtok(result, " ,()[]\'");
        //printf("%s\n", buffer);
        while(result != NULL){
            //printf("%s\n", buffer);
            if(stricmp(result, strng) == 0){
                //printf("found!!\n");
                printf("%s\n", buffer);
                fprintf(Compilation, "%s", buffer);
                //printf("%s", result);
            }
            result = strtok (NULL, " ,()[]\'");
        }
        result = (char*)realloc(result, 500);
    }

私はこれがめちゃくちゃで、おそらく最善の方法でさえないことを知っていますが、それは私が持っているものです. buffer と result は、最初は 1024 バイトで malloced されています。各行が解析され、行内に文字列が見つかった場合、行全体が新しいファイルに追加されます。記憶がごちゃごちゃしていることはわかっているので、まだ整理中です。私の問題は、 fprintf が多くの行で実行され、たまに行にヒットしてアプリケーションがクラッシュすることです。IDE (VSexpress2012) で printf 行を使用してこの問題をデバッグすると、fprintf がファイルへの出力を停止した後、printf が実際に多くの行を出力することがわかります。どんな助けでも大歓迎です。

4

1 に答える 1

2

に任意のポインターを渡すことはできませんrealloc。問題はstrtok、ポインターを変更してから、このポインターを使用resultしようとすることです。から返された元のポインタが必要です。reallocreallocmalloc

于 2013-06-27T19:57:41.400 に答える