在Jason处理地震数据时,需要加载井数据,而井数据又分为多种。在加载数据之前可能要对其进行预处理。本文以时深关系曲线为例,对其进行处理使得Jason能够识别。
简单的处理过程如上图,生成新的文本文件,去掉原数据中的字符,同时删去头尾部分数据以节省空间
本方法代码如下:
/
author:Yongxiao Tian,China university of petroleum East
/
#define _CRT_SECURE_NO_WARNINGS
#include "max.h"
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main()
{
char filepath[FILENAME_MAX] = "J:\\TD\\filename.txt"; //保存有所有需要处理的文件名
char openfile[FILENAME_MAX] = { 0 };
char savefile[FILENAME_MAX] = { 0 };
char readfile[FILENAME_MAX] = { 0 };
char* temp = 0;
FILE* cf;
FILE* of;
FILE* sf;
int N = 1;
int i = 0;
int fa = 0;
int sa = 0;
double frow = 0; //第一列
double srow = 0; //第二列
cf = fopen(filepath, "rt");
if (!cf){ printf("open file failed\n"); return -9; }
while (!feof(cf))
{
//读取待处理文件名
fscanf(cf, "%s\n", readfile);
//设置打开文件路径
strcat(strcpy(openfile, "J:\\TD\\"), readfile);
//设置保存文件路径
temp = strchr(readfile, '_');
strcpy(savefile, "J:\\TD_nw\\");
strncat(savefile, readfile, temp - readfile);
strcat(savefile, "_TD.txt");
printf("%s ||||| %s %d\n", openfile, savefile, N++);
of = fopen(openfile, "rt");
sf = fopen(savefile, "wt");
if (!of || !sf){ printf("open file failed\n"); return -99; }
for (i = 0; i < 10; i++)fgets(readfile, FILENAME_MAX, of); //删除开头十行
fscanf(of, "%lf%lf%*s", &frow, &srow);
while (!feof(of))
{
if (frow < 100.0)fa = 9;
else if (frow < 1000.0)fa = 8;
else fa = 7;
if (srow*2 < 100.0)sa = 9;
else if (srow*2 < 1000.0)sa = 8;
else sa = 7;
if (srow>0.0){
fprintf(sf, "%-12.*lf %-12.*lf\n", fa, frow, sa, srow * 2);
}
fscanf(of, "%lf%lf%*s", &frow, &srow);
}
fclose(of);
fclose(sf);
}
return 0;
}
好啦,希望大家学的开心。最近在做项目,我会把期间的心得体会和技巧慢慢po上来。