?? segy.c
字號:
//++++++++++++++++++++++++++++++++++++++++++++++++++++//
// 讀segy數據方法
//++++++++++++++++++++++++++++++++++++++++++++++++++++//
#include <stdio.h>#include <math.h>#include <string.h>#include <ctype.h>#define LEN 3200#define NQ2 30000void main () { float ki[NQ2], ko[NQ2]; int nflg,n,j,m,l,k,i; int len,len1,key,jhd,number, si, nta, ntb, nt, lz;
short int gh[400];
char namei[50],nameo[50];
/*******************************************************/ FILE *fp1,*fp2; union { int hd[NQ2]; float data[NQ2]; char buf[NQ2]; short int shd[NQ2]; }dat;
/***************************************************************************/
printf("input file name: ");
scanf("%s", &namei);
printf("output file name: ");
scanf("%s", &nameo);
fp1=fopen(namei,"rb"); if(fp1==NULL) {printf("can't open input segy file\n"); exit(0);} fp2=fopen(nameo,"wb"); if(fp2==NULL) {printf(" can't open output segy file\n"); exit(0);}
fread(&dat.buf[0],1,LEN,fp1);
fwrite(&dat.buf[0],1,LEN,fp2);
fread(&dat.buf[0],1,400,fp1);
len1=dat.shd[10]; printf ("sample numbers: %d \n", len1); printf ("sample rate(ms): %u \n", dat.shd[8]/1000); printf ("seg_y flag: %d \n", dat.shd[12]);
/**************************************************************/
for(i=0; i<400; i++)
gh[i]=dat.shd[i];
fwrite(&dat.buf[0],1,400,fp2); nflg=dat.shd[12];
if(nflg==1) len=len1*4+240; if(nflg==2) len=len1*4+240; if(nflg==3) len=len1*2+240;
printf ("\ninput record length: %d \n", len);
n=0; jhd=60;
/************************************************************/ while ((l=fread(&dat.buf[0],1,len,fp1))>0)
{
for(i=0; i<len1; i++)
ki[i]=dat.data[i+jhd]; // dat.hd[], dat.shd[]
//filter(ki,len1,ko); // 對數據進行各種處理
for(i=0; i<len1; i++)
dat.data[i+jhd]=ko[i]; // dat.hd[], dat.shd[]
fwrite(&dat.buf[0],1,len,fp2);
n++;
printf("trace number: %d \n", n);
}
fclose(fp1); fclose(fp2); }
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -