?? 0816.c
字號:
#include <fcntl.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <io.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// FOR DATAFILE 1
#define DATA1_INPUT_FILENAME "gps_proc_01.dat"
#define DATA1_OUTPUT_FILENAME "gps_proc_01_out.txt"
int TransData1(void) ;
// FOR DATAFILE 2
#define DATA2_INPUT_FILENAME "gps_prim_01.dat"
#define DATA2_OUTPUT_FILENAME "gps_prim_01_out.txt"
int TransData2(void) ;
// main routine
int main(void)
{
if(TransData1() >= 0) {
TransData2() ;
}
return 0 ;
}
// datafile 1 translation
int TransData1(void)
{
// file descriptors
int fdData1Input ;
int fdData1Output ;
// data fields and buffer
double dFields[10] ;
int cnt = 0 ;
char buffer[4086] ;
// open data input file
if((fdData1Input = _open(DATA1_INPUT_FILENAME, _O_BINARY | _O_RDONLY)) < 0) {
fprintf(stderr, "* can't open data1 input file. terminated.\n") ;
return -1 ;
}
// create data output file
if((fdData1Output = _open(DATA1_OUTPUT_FILENAME, _O_CREAT | _O_BINARY | _O_RDWR, _S_IREAD | _S_IWRITE)) < 0) {
fprintf(stderr, "* can't create data1 output file. terminated.\n") ;
return -1 ;
}
// read and translate...
fprintf(stderr, " ** translation result of %s\n", DATA1_INPUT_FILENAME) ;
while(!_eof(fdData1Input)) {
// read data
if(_read(fdData1Input, (char *)dFields, sizeof(double) * 10) < 0) {
fprintf(stderr, "* an error when reading data1 input file. terminated.\n") ;
return -1 ;
}
cnt ++ ;
// display the data on screen and write in output file
fprintf(stderr, "%05d. %f %f %f %f %f %f %f %f %f %f\n",
cnt, dFields[0], dFields[1], dFields[2], dFields[3], dFields[4],
dFields[5], dFields[6], dFields[7], dFields[8], dFields[9]) ;
sprintf(buffer, "%05d. %f %f %f %f %f %f %f %f %f %f\n",
cnt, dFields[0], dFields[1], dFields[2], dFields[3], dFields[4],
dFields[5], dFields[6], dFields[7], dFields[8], dFields[9]) ;
if(_write(fdData1Output, (const char *)buffer, strlen(buffer)) < 0) {
fprintf(stderr, "* an error when writing data1 output file. terminated.\n") ;
return -1 ;
}
}
// close input and out files
_close(fdData1Input) ;
_close(fdData1Output) ;
return 0 ;
}
// datafile 2 translation
int TransData2(void)
{
// file descriptors
int fdData2Input ;
int fdData2Output ;
// data fields and buffer
double dFields[10] ;
int cnt = 0 ;
char buffer[4086] ;
int readCnt ;
// open data input file
if((fdData2Input = _open(DATA2_INPUT_FILENAME, _O_BINARY | _O_RDONLY)) < 0) {
fprintf(stderr, "* can't open data2 input file. terminated.\n") ;
return -1 ;
}
// create data output file
if((fdData2Output = _open(DATA2_OUTPUT_FILENAME, _O_CREAT | _O_BINARY | _O_RDWR, _S_IREAD | _S_IWRITE)) < 0) {
fprintf(stderr, "* can't create data2 output file. terminated.\n") ;
return -1 ;
}
// skip dummy data...
if(_read(fdData2Input, (char *)dFields, sizeof(char) * 68) < 0) {
fprintf(stderr, "* an error when reading data2 input file. terminated.\n") ;
return -1 ;
}
// read and translate...
fprintf(stderr, " ** translation result of %s\n", DATA2_INPUT_FILENAME) ;
while(!_eof(fdData2Input)) {
// read data
if((readCnt = _read(fdData2Input, (char *)dFields, sizeof(double) * 10)) < 0) {
fprintf(stderr, "* an error when reading data2 input file. terminated.\n") ;
return -1 ;
} else if(readCnt < sizeof(double) * 10) {
fprintf(stderr, "* the record format is incomplete. terminated.\n") ;
break ;
}
cnt ++ ;
// display the data on screen and write in output file
fprintf(stderr, "%05d. %f %f %f %f %f %f %f %f %f %f\n",
cnt, dFields[0], dFields[1], dFields[2], dFields[3], dFields[4],
dFields[5], dFields[6], dFields[7], dFields[8], dFields[9]) ;
sprintf(buffer, "%05d. %f %f %f %f %f %f %f %f %f %f\n",
cnt, dFields[0], dFields[1], dFields[2], dFields[3], dFields[4],
dFields[5], dFields[6], dFields[7], dFields[8], dFields[9]) ;
if(_write(fdData2Output, (const char *)buffer, strlen(buffer)) < 0) {
fprintf(stderr, "* an error when writing data2 output file. terminated.\n") ;
return -1 ;
}
// skip dummy data...
if(_read(fdData2Input, (char *)dFields, sizeof(char) * 12) < 0) {
fprintf(stderr, "* an error when reading data2 input file. terminated.\n") ;
return -1 ;
}
}
// close input and out files
_close(fdData2Input) ;
_close(fdData2Output) ;
return 0 ;
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -