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);
}

  

posted @ 2014-01-09 10:52  Fight_4_ever  阅读(612)  评论(0编辑  收藏  举报