如何使用fwrite()将结构写入文件?

时间:2018-12-19 15:42:58

标签: c

我正在用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 ,它们绝对是我想要进入结构的字符串。没有编译器错误,但是我的存档文件中没有显示标题以及内容。

1 个答案:

答案 0 :(得分:4)

您的fwrite尝试写入in,而不是arch。由于您不检查fwrite的返回值,因此不会检测到此错误(试图写入已打开以供读取的文件)。