私は 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);
}
どんな洞察も大歓迎です。ありがとう!