如何用fopen做一个C语言的文件批处理算法

来源:百度知道 编辑:UC知道 时间:2024/05/24 00:49:03
在C:\\根目录下有01,02....,20这20个文件夹,每个文件夹下有10个.bmp文件(当然这里什么类型不重要).需要做的是把这些文件逐一读到内存上,处理完以后,存C根目录下,名字换成文件夹名+原来的文件名

我的代码大概这样设计
FILE *p1=fopen("C:\\01\\1.bmp","rb");
/*处理 p */
FILE *p2=fopen("c:\\011.bmp","wb");
fwrite(p2,sizeof(..),..,p1);

现在有两个问题
1
怎么把fopen的第一个参数改成变量,貌似要求是const char?
2
是否有其他办法,可以不用改变第一个参数的办法实现批处理?类似于
DIR *p=dir(...); 不知道有没有实现这种功能的函数?...

感谢大家了
嫌麻烦的
只用给我一个大概的函数调用就可以了
我自己能试试
或者给一个连接也行
但是一定要能成功的啊

你的意思是把20个文件夹下的总计200个文件读出来,写到同一个目录下么?
其实filename参数可以是变量啊。函数声明中的const char *并不是“要求你传入常量”的意思,而是“我保证把你给我的东西当成常量,不会修改”,但是你可以传入变量。

可以这样:
char filename[64];
for(i = 1; i <= 20; i++){
for(j = 1; j <= 10; j++){

memset(filename, 0, sizeof(filename));
sprintf(filename, "c:\\%02d\\%d.bmp", i, j);//得到要读的文件名
FILE* fp1 = fopen(filename, "rb");
....//读数据

memset(filename, 0, sizeof(filename));
sprintf(filename, "c:\\%03d.bmp", i*10+j);//得到要写的文件名
FILE* fp2 = fopen(filename, "wb");
...//写数据

}
}

const的意义你理解有偏差,可以存放变量