[笔记].怎样使用C语言读取文件中的数据,然后再写到文件中
引子:新近在做热电偶的分度表,由于要提高其解析度,若以要对已有的分度表进行插值。然而,上万个数据,若是手动插值,不知道要弄到猴年马月。小试一下C语言的fscanf和fprintf的格式化输入和输出,因为之前从来没有使用C来操作文件,所以一番折腾,还好成功了,现贴出来,以后再用。
insert_new_elsement.c
#include <stdio.h> 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},