int main(void){
FILE* infile = fopen("file","r);
FILE* fp = NULL;
unsigned char* buffer = malloc(512);
while(fread(buffer,512,1,infile) > 0){ //reading a file block by block
if(buffer[0] == 0xff){
... //defining variable "name"
if(fp != NULL)fclose(fp);
fp = fopen(name,"w+");
fwrite(buffer,512,1,fp);
} else if(fp != NULL) {
fwrite(buffer,512,1,fp);
}
}
}
看来我不能FCLOSE使用相同的指针,为什么在fopen?我需要我的指针在主体中的任何地方都可以访问,所以我不能在我的时候声明一个新的。
编辑:哦,上帝,问题就迎刃而解了。我可能超级累了。我正在编译错误的文件。反正...
谢谢你,伙计!
您不是'使用'相同的指针那里。你只是捕获一个返回值。段错误是由您未在此发布的代码引起的。 – 2013-03-27 00:26:28
我知道这很奇怪,但是如果我没有用flose(fp)释放内存,sgefault不会再出现。 – superzamp 2013-03-27 00:32:18
请构建重建问题的最小完整程序。 – 2013-03-27 00:32:51