Я делаю архивную программу на 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_name
и buffer
, и они определенно являются строками, которые я хочу ввести вструктура.Нет ошибок компилятора, но в моем архивном файле не отображается заголовок вместе с содержимым.