【发布时间】:2013-12-13 23:11:08
【问题描述】:
每次我尝试这样做时都会遇到分段错误。这真的很困扰我,因为这是一项非常困难的任务,而且迟到了,因为我无法解决这个问题。尝试运行 parseInputStream 时出现分段错误。我尝试将文件指针更改为指向文件指针的指针,但我仍然遇到分段错误。控制台打印所有的 ns 但不打印任何 ws。请帮忙。
void parseInputStream(FILE *file, FILE *infile){
printf("w\n");
char string[9999999];
while(fscanf(infile, "%s", &string)!= EOF){
printf("w\n");
if(string[0] == ';'){
fgets(string, 9999999, infile);
continue;
}
parseInput(file, infile, string);
}
int main(int argc, char* argv[]){
printf("n\n");
FILE *file = fopen("intest.asm", "w");
printf("n\n");
FILE *infile = fopen("intest.j", "r");
printf("n\n");
parseInputStream(file, infile);
fclose(infile);
fclose(file);
return 0;
}
【问题讨论】:
-
堆栈最大允许大小通常在 8Mb 左右,至少在 GNU/linux 发行版下,它可能会有所不同,但可能不会那么大。
-
在同一流上使用
scanf和fgets将绑定到cause problems。另外:你将&infile(FILE **)传递给fgets,你的编译器应该抱怨这个。
标签: c pointers file-io compiler-construction segmentation-fault