⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 0816.c

📁 GPS data processing !
💻 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 + -