安德鲁

[笔记].怎样使用C语言读取文件中的数据,然后再写到文件中

0
阅读(2037)

引子:新近在做热电偶的分度表,由于要提高其解析度,若以要对已有的分度表进行插值。然而,上万个数据,若是手动插值,不知道要弄到猴年马月。小试 一下C语言的fscanf和fprintf的格式化输入和输出,因为之前从来没有使用C来操作文件,所以一番折腾,还好成功了,现贴出来,以后再用。

insert_new_elsement.c

#include 
	 
	typedef struct{
	    int V;
	    int T;
	}V2T_T, *V2T_PT;
	 
	int main()
	{
	    int i;
	    V2T_T a[3], b[2];
	    char filename1[80], filename2[80];
	    FILE *pOrigin, *pNew;
	    
	    printf("输入源文件名:");
	    gets(filename1);
	    printf("输入目的文件名:");
	    gets(filename2);
	     
	    pOrigin = fopen(filename1, "rb");
	    pNew = fopen(filename2, "wb");
	       
	    do{
	         
	        fscanf(pOrigin, "%d %d", &a[0].V, &a[0].T);
	        fscanf(pOrigin, "%d %d", &a[2].V, &a[2].T);
	        if(0 != feof(pOrigin)) break;
	        a[1].V = (a[0].V + a[2].V) >> 1;
	        a[0].T *= 10;
	        a[2].T *= 10;       
	        a[1].T = (a[0].T + a[2].T) >> 1;
	         
	        b[1].V = (b[0].V + a[0].V) >> 1;
	        b[1].T = (b[0].T + a[0].T) >> 1;
	         
	        printf("    {%d, %d},\n", b[1].V, b[1].T);
	        fprintf(pNew, "    {%d, %d},\n", b[1].V, b[1].T);
	         
	        b[0] = a[2];
	         
	        i=0;       
	        do{
	            printf("    {%d, %d},\n", a[i].V, a[i].T);
	            fprintf(pNew, "    {%d, %d},\n", a[i].V, a[i].T);
	        }while(++i < 3);
	    }while(0 == feof(pOrigin));
	     
	    fclose(pOrigin);
	    fclose(pNew);
	     
	    return 0;
	}

源文件节选

-78578 -200
	-78174 -199
	-77770 -198
	-77366 -197
	-76962 -196
	-76558 -195
	-76255 -194
	-75851 -193
	-75447 -192
	-75043 -191
	-74639 -190

目标文件节选

{-78578, -2000},
	{-78376, -1995},
	{-78174, -1990},
	{-77972, -1985},
	{-77770, -1980},
	{-77568, -1975},
	{-77366, -1970},
	{-77164, -1965},
	{-76962, -1960},
	{-76760, -1955},
	{-76558, -1950},
	{-76407, -1945},
	{-76255, -1940},
	{-76053, -1935},
	{-75851, -1930},
	{-75649, -1925},
	{-75447, -1920},
	{-75245, -1915},
	{-75043, -1910},
	{-74841, -1905},
	{-74639, -1900},