打开一个Windows文件目录在c中读/写

我试图用c写一个windows目录的内容到一个文件。 例如,如果我有一个jpegs目录(即包含多个jpegs的目录),并且想要将它们转换为.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。 有没有人有任何关于如何解决这个问题的想法?

Solutions Collecting From Web of "打开一个Windows文件目录在c中读/写"

在Unix系统上,尽管你可以打开一个目录来阅读,除非你使用opendir()readdir()closedir()系列调用,否则你不能真正阅读它。 你不能写入Unix上的目录。 即使超级用户(root)也不能这样做。 (打开一个目录的主要原因,比open()更通常的方法是,你可以使用chdir()fchdir()来返回到你开始的地方,或者使用*at()函数,比如openat()来引用目录。)

在Windows上,你至少需要使用"rb"模式,但坦率地说,我不希望你能用它做很多事情。 有可能类似于Windows API中的unix opendir()函数,你应该使用它们。