0

私は C プログラムを書いていますが、かなり大きなファイル (~4MB の .txt ファイル) を扱っています。プログラムは大きなファイルを開き、小さなファイルのそれぞれをテストする前に、小さなファイルの束に分割します。後でこれらのファイルを開き、セクション全体がコピーされたことを確認し、セクションが効果的にコピーされなかった場合は 1 を返す関数を作成しました (私が抱えている別のバグは、最初の 2 単語のみをコピーする場合があることです)セクションの)。koding.com (gcc コンパイラーを使用) でプログラムをコンパイルして実行すると、すべてのテスト ファイルで完全に機能します。ただし、ターミナルを介してMacBookでローカルに実行しようとすると(Lionを実行し、Xcode 4.6.3に含まれるgccのバージョンがあります)、「Segmentation fault: 11」と表示されて終了しますが、使用する場合のみ特定のファイル (例: 3.

関数の呼び出し方法は次のとおりです。

for(i=1;tableArray[i].count!=0;i++)
{
    strcpy(word,tableArray[i].shortName);
    strcat(word,".txt");
    if(fopen(word, "r")!=NULL)
    {
        testFile = fopen(word, "r");
        problems[i] = checkFile(testFile);
        fclose(testFile);
    }

}

そして、ここに関数があります:

int checkFile(FILE *file)
{
    char word[NAMELEN];
    int count = 0;

    while(fscanf(file, "%s", word)!=EOF)
        count++;

    if(count<3)
        return(1);
    else return(0);
}

どんな洞察も大歓迎です。ありがとう!

4

0 に答える 0