C 在文件指定位置更新数据
#include<stdio.h> #include <stdlib.h> char * read(FILE *fp) /*注意这里,将fp文件中的剩余部分读取到一个字符数组中,并返回数组地址*/ { char c,*t=NULL; int i=0; t=malloc(sizeof(char)); while ((c=fgetc(fp))!=EOF) { t[i++]=c; t=realloc(t,sizeof(char)*(i+1)); } if (i) t[i]='\0'; else { free(t); t=NULL; } return t; } void write(FILE *fp,const char *t)/*注意这里,将read()()函数读取的内容写入fp文件中的当前读写位置*/ { int i; for (i = 0; t[i]; i++) { fputc(t[i],fp); } free(t); } void main() { int i; char c; char *t; /*注意这里*/ FILE *fp; fpos_t ps; /*注意这里,用于记录文件的读写位置*/ fp=fopen("E:/te.txt","r+"); while ((c=fgetc(fp))!=EOF) /*注意这里*/ { if (c==' ') { fgetpos(fp,&ps); /*注意这里*/ t=read()(fp); /*注意这里*/ fsetpos(fp,&ps); /*注意这里*/ fseek(fp,-1*sizeof(c),SEEK_CUR); /*注意这里*/ for(i=0;i<12;i++) fputc('\t',fp); /*注意这里*/ fgetpos(fp,&ps); /*注意这里*/ write(fp,t); /*注意这里*/ fsetpos(fp,&ps); /*注意这里*/ } } fclose(fp); }