我正在用C编写一个存档程序-我已经遍历它并将文件内容写到一个文件中,但是我似乎无法获得我已经拥有的 fileHeader
结构创建(使用 fwrite()
)写入文件(目前仅使用两个属性进行测试,我知道将需要更多)。这是我的代码:
struct fileHeader {
字符名称[50];
字符路径[50];
};
void addToArch(char * inPath,char * archPath,struct fileHeader标头){
FILE * in,* arch;
诠释
arch = fopen(archPath,“ ab”);
struct stat sb;
stat(inPath,&sb);
if(S_ISREG(sb.st_mode)== 0){
fprintf(arch,“ \ n%s \ n”,inPath);
printf(“已检测到目录-已跳过”);
}
其他{
in = fopen(inPath,“ rb”);
ch = fgetc(in);
fwrite(&header,1,sizeof(struct fileHeader),in);
而(ch!= EOF){
fputc(ch,arch);
ch = fgetc(in);
}
fclose(in);
fclose(arch);
printf(“文件复制成功!\ n”);
}
}
我的呼叫代码在这里:
//创建新的文件头
struct fileHeader标头;
//填充结构域
snprintf(header.name,50,“%s”,entry-> d_name);
snprintf(header.path,50,“%s”,缓冲区);
addToArch(buffer,“ out.txt”,标头);
我已经打印了 entry-> d_name
和 buffer
,它们绝对是我想要进入结构的字符串。没有编译器错误,但是我的存档文件中没有显示标题以及内容。
答案 0 :(得分:4)
您的fwrite
尝试写入in
,而不是arch
。由于您不检查fwrite
的返回值,因此不会检测到此错误(试图写入已打开以供读取的文件)。