【发布时间】:2025-12-24 14:40:12
【问题描述】:
我正在尝试使用 c 将 windows 目录的内容写入文件。例如,如果我有一个 jpeg 目录(即包含多个 jpeg 的目录)并且想将它们转换为 .raw 文件,我有这样的东西:
#include <stdio.h>
#include <sys/stat.h>
#include <unistd.h>
#include <stdlib.h>
typedef uint8_t BYTE;
#define BLOCK 512*sizeof(BYTE);
int main(void)
{
FILE * fd = fopen("C:\\jpegs", "r");
if (fd == NULL) {
fprintf(stderr, "Error opening device file.\n");
return EXIT_FAILURE;
}
int block = BLOCK;
FILE * fn = fopen("new.raw", "w+");
void * buff = malloc(block);
while(feof(fd) == 0) {
fread(buff,block,1,fd);
fwrite(buff,block,1,fn);
}
free(buff);
fclose(fd);
fclose(fn);
return 0;
}
问题是我认为 Windows 目录不会以 EOF 终止。有人对如何解决这个问题有任何想法吗?
【问题讨论】:
-
什么是"windows 文件目录"?
jpegs是什么,是文件还是目录? “或者更一般地说,Windows 如何在内存中对其目录和/或硬盘驱动器进行分区?” - 我现在摸不着头脑......你的直接问题是:你真的知道什么吗?术语 memory 和 partition 究竟是什么意思?我问是因为他们与您的问题无关。 -
这是一个目录。对不起,令人困惑的语言。哎呀,写得很快,没有考虑我想问什么。我想我想问的是 Windows 目录在内存中是如何相互区分的。或者换一种说法,当我在目录上使用 fopen 时, fread 究竟是从什么读取的?
-
因为,当我运行这个脚本时,它只是继续运行并不断向 new.raw 写入比 jpegs 目录中更多的字节。
-
拜托,仔细改写你的问题,仍然不清楚"file of jpegs"是什么?那么它是一个文件,还是一个目录?
-
您似乎实际上有两个问题:首先读取目录并获取给定类型的所有文件,其次显然(?)希望将 .jpeg 文件转换为某些文件原始位图格式,并且(可能?)将它们全部连接成一个。或者,也许您正在重新发明一个原始的
tar或cpio样式存档器,它只是连接文件而不修改它们?