每当我尝试这样做时,我都会遇到分割错误。这真的让我感到困扰,因为这是一项非常艰难的任务,而且迟到了,因为我无法解决这个问题。当我尝试运行parseInputStream时出现分段错误。我试过将文件指针改为指向文件指针的指针,但我仍然遇到了段错误。控制台打印所有的ns,但没有ws。请帮助。将文件指针传递给方法时出现C分割错误
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发行版,它可能会有所不同,但它可能不会是那么大。 – user2485710
在同一个流上使用'scanf'和'fgets'被绑定到[cause problems](http://stackoverflow.com/questions/5918079/fgets-doesnt-work-after-scanf)。另外:你将'&infile'('FILE **')传递给'fgets',你的编译器应该抱怨这个。 – Kninnug