用C语言一次性读取多个文件,大量文件

原创 2015年07月24日 12:54:56

今天被同学问到如何一次性读取多个文件,当时第一反应就是将所有文件的文件名存入一个字符串数组里,然后依次读。但是同学把文件发给我看的时候,发现竟然有360个文件,当时愕然。结合网上搜索得到的资料,再加上自己的考虑有以下几种思路

1、 先将所有文件都合并成一个文件,然后从这一个文件中读
copy /b <filename1>+<filename2>+…+<filenameN> <newfilename>  
DOS合并文件命令
这种方法貌似可行,但在文件数目比较多的情况下,敲文件名也需耗费大量工作。诚然,我们都是懒汉。
2、给的文件名为有规律递增,比如同学给的是 scan0000.raw scan0001.raw,这样可以通过字符串转换,字符串连接等方式依次打开
3、进而想到如果文件名不是有规律的,而是杂乱的,该怎么办呢?
解决办法是:将文件名全部写入一个文件中,然后从这个文件中索引出要读的文件。
dir C:\Users\clpwk\Desktop\C\\*.txt /b > C:\Users\clpwk\Desktop\C\\name.dat
将该文件夹下所有的txt文档的文件名导入到一个文本文件中去
下述代码转自:http://blog.sina.com.cn/s/blog_7a1a111e01011wrw.html

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define num 1 //文件数量
#define number 100 //导入的行数
int main()
{
 //保存文件名
 system("dir d:\\C语言批量导入数据\\*.txt /b > d:\\C语言批量导入数据\\name.dat");
//这句话使用了系统的DOS命令,将该问佳佳下所有的txt文档的文件名导入到一个文本文件中去
//然后导入这个文件的内容,使用字符串变量生成文件路径,作为参数依次导入文件
 char str[50]={"d:\\c语言批量导入数据\\"},str1[num][30],date[number][11];
 double price[number][6];
 FILE *in,*fp;
 printf("%s length=%d\n",str,strlen(str));
   
 in=fopen("d:\\c语言批量导入数据\\name.dat","r");
 if(in==NULL)
 {
  printf("can't open the file.");
  exit(0);
 }
 for(int i=0;i<num;i++)
 {
  fscanf(in,"%s",&str1[i][0]);
  strcat(str,&str1[i][0]);
  printf("%s  length=%d\n",str,strlen(str));
        fp=fopen(str,"r");
   if(fp==NULL)
   {
    printf("can't open the file.\n");
    exit(0);
   }
   for(int i=0;i<number;i++)
   {
    fscanf(fp,"%s",&date[i][0]);
    for(int j=0;j<6;j++)
     fscanf(fp,"%lf",&price[i][j]);
   }
   //检验导入数据是否正确
   for( i=0;i<number;i++)
   {
    printf("%s ",&date[i][0]);
    for(int j=0;j<6;j++)
     printf("%lf ",price[i][j]);
    printf("\n");
   }
   fclose(fp);
  strcpy(str,"d:\\c语言批量导入数据\\");
 }
 fclose(in);
 return 0;
}



版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

C++文件批量生成与读写

利用C++的fstream流,批量生成文件,并对文件写入数据。 实现效果为: 注意输入扩展名是,前面需要加上".",比如".txt" 实现代码如下: #include #include #in...

C语言读取文件大量数据到数组

针对.txt文档的大量有规律数据,譬如100行8列的数据将其读取到二维数组(矩阵)中,留作之后的数据处理。 改程序通过宏定义的方法来确定将要读取程序的行数和列数,将数据读取到二维数组data[100...

一种批量读取文件的方法—CSV文件

在C语言编程中经常遇到一个问题:如何批量读取一个目录下某一类型的所有文件,例如图像文件。最近在研究图像模式分类问题,经常需要对某一种分类器进行训练,在训练过程中需要遍历某一文件夹下的几百甚至几千张图片...

如何利用C/C++逐行读取txt文件中的字符串(可以顺便实现文本文件的复制)

如下代码均在Windows/VC++6.0下测试通过, 请注意linux和Windows文件格式的区别。 先用C语言写一个丑陋的程序:...
  • stpeace
  • stpeace
  • 2013年10月07日 22:28
  • 116638

C/C++ 连续读写多个文件

本文是为了解决多个文件的读写问题: 问题:在我的E盘下gene_info有300个.dat文件。那么我如何把这300个.dat文件中的内容读取出来呢? 每个.dat文件中的内容就是这样的字符串...

C语言逐行读取文件内容,写入另外一个文件

#include #include #include int main(void) { FILE * fp; FILE * fd; char buf[1024]; fp=fopen("...

c语言fwrite和fread连续读写文件流

c语言fwrite和fread连续读写文件流本例程的编写是基于windows,编译器用的是gnu下的gcc: 头文件stdio.h和stdlib.h 读写函数是fwrite和fread 文件指针移动函...

C++ 获取文件夹下的所有文件名

获取文件夹下所有的文件名是changy
  • xuejiren
  • xuejiren
  • 2014年07月05日 11:17
  • 49321

C语言常用的代码组织形式--多文件

对于小型代码而言,可以将所有的文件写到一个源文件中。但是对于一个大的项目工程,代码量极大,如果把所有的源码都放在一个源文件,就会显得代码杂乱,不利于阅读,更不便于代码的修改和维护。这时候我们需要合理的...
  • gybshen
  • gybshen
  • 2016年04月26日 21:35
  • 1587

Delphi7高级应用开发随书源码

  • 2003年04月30日 00:00
  • 676KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:用C语言一次性读取多个文件,大量文件
举报原因:
原因补充:

(最多只允许输入30个字)