使用程序计算出了一堆文件,每个文件才1kb,但是我要用这一堆文件作图,所以我必须先把一堆文件合成一个文件
我需要将所有的“.dat”文件汇总到一起,进行数据可视化
搜了搜网上内容,我使用C语言编写了个函数,先放在这里以备以后查看
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <windows.h>
/*************这一段是网上找的,并没有用到*****************/
void enum_path(char* cpath)
{
WIN32_FIND_DATA wfd;
HANDLE hfd;
char cdir[MAX_PATH];
char subdir[MAX_PATH];
int r;
GetCurrentDirectory(MAX_PATH, cdir);
SetCurrentDirectory(cpath);
hfd = FindFirstFile("*.*", &wfd);
if (hfd != INVALID_HANDLE_VALUE) {
do {
if (wfd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
{
if (wfd.cFileName[0] != '.') {
// 合成完整路径名
sprintf(subdir, "%s//%s", cpath, wfd.cFileName);
// 递归枚举子目录
enum_path(subdir);
}
}
else {
printf("%s\\%s\n", cpath, wfd.cFileName);
// 病毒可根据后缀名判断是
// 否要感染相应的文件
}
} while (r = FindNextFile(hfd, &wfd), r != 0);
}
SetCurrentDirectory(cdir);
}
/*************这一段是网上找的,并没有用到*****************/
void File_copyand_arrangement()
{
FILE* fp;
FILE* fd;
int nFile = 1;//存储需要处理的文件数量
char buf[1024];
char filename[225];//存储需要拷贝的目标文件名
char filename_stats[] = "stats.data";//存储拷贝完成后的文件名
fd = fopen(filename_stats, "w");
fprintf(fd, "i g[i].r g[i].x1 g[i].x2 g[i].x3 g[i].v1 g[i].v2 g[i].v3 g[i].a1 g[i].a2 g[i].a3 fhf1[i] fhf2[i] fhf3[i] g[i].p g[i].s ESE g[i].fr g[i].ifr g[i].ice g[i].slip g[i].rw g[i].fm g[i].M11 g[i].M12 g[i].M21 g[i].M22 g[i].z\n");
for (;; nFile++)
{
sprintf(filename, "G:\\单颗粒沉降\\build\\DEM%.6i.dat", nFile);//打开指定位置的文件
fp = fopen(filename, "r");
if (fp == NULL)
{
perror("open file");
exit(0);
}
if (fd == NULL)
{
perror("open file");
exit(0);
}
while (fgets(buf, sizeof(buf), fp) != NULL)
{
fputs(buf, fd);
printf("%s", buf);
}
fclose(fp);
}
fclose(fd);
}
int main(void)
{
File_copyand_arrangement();
return 0;
}
处理完成以后就是像上边的第二张图:stats.data 文件