我正在编写一个C程序,它正在处理相当大的文件(~4MB .txt文件)。在测试每个小文件之前,程序打开大文件并将其拆分为一堆小文件。我写了一个函数,以后打开这些文件,测试以确保整个部分被复制,如果部分没有被有效复制,则返回1(我有一个不同的错误,有时它只复制一节的前两个字)。当我编译&通过koding.com(使用gcc编译器)运行我的程序,它适用于所有测试文件。但是,当我尝试通过终端在我的MacBook上本地运行它(我运行Lion,并在Xcode 4.6.3中包含gcc版本)时,它给了我"分段错误:11"并退出,但只有当我在某些文件上使用它时(例如3.9MB文件给出了段错误,但2.7MB文件没有)。
以下是调用函数的方法:
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);
}
非常感谢任何见解。谢谢!