我在使用以下C代码时出现问题:
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,为什么?我需要我的指针在主要的各处都可以访问,所以我不能在我的时间内声明一个新的。
编辑:天啊,问题解决了。我可能非常累。我正在编译错误的文件。总之...
谢谢,伙计们!
答案 0 :(得分:1)
很难说为什么因为你没有向我们展示你的所有代码。但是,重新打开文件应该非常简单:
#include <stdio.h>
int main(void)
{
FILE* fp = NULL;
char name[] = "somefile";
for (;;)
{
// do something
if ((fp = fopen(name, "w+")) == NULL)
break;
// do something with the file
fclose(fp);
// do something
}
return 0;
}