gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 06:12:15 24 4
gpt4 key购买 nike

我正在用 C 编写一个存档程序 - 我已经得到它遍历并将文件内容写入单个文件,但我似乎无法获得 fileHeader 结构创建(使用 fwrite())写入文件(目前只使用两个属性进行测试,我知道需要更多)。这是我的代码:

struct fileHeader {
char name[50];
char path[50];
};

void addToArch(char *inPath, char *archPath, struct fileHeader header) {
FILE *in, *arch;
int ch;
arch = fopen(archPath, "ab");

struct stat sb;
stat(inPath, &sb);

if(S_ISREG(sb.st_mode) == 0) {
fprintf(arch, "\n%s\n", inPath);
printf("Directory detected - skipped");
}

else {
in = fopen(inPath, "rb");
ch = fgetc(in);
fwrite(&header, 1, sizeof(struct fileHeader), in);
while (ch != EOF) {
fputc(ch, arch);
ch = fgetc(in);
}
fclose(in);
fclose(arch);
printf("File copied successfully!\n");
}
}

我的调用代码在这里:

//Create new file header
struct fileHeader header;
//Populate struct fields
snprintf(header.name, 50, "%s", entry->d_name);
snprintf(header.path, 50, "%s", buffer);

addToArch(buffer, "out.txt", header);

我已经打印了 entry->d_namebuffer,它们绝对是我想要进入结构的字符串。没有编译器错误,但我的存档文件中没有显示标题和内容。

最佳答案

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

关于c - 如何使用 fwrite() 将结构写入文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53854645/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com