#includestdio.h#includestring.h#includectype.h#includestdlib.h#defineA10char*shuru(void);intmain(void){char*s=NULL;inta=0;FILE*p=NULL;charc=0;char*m=\"D:\\\\我的文档\\\\c.txt\";if((p=fopen(m,\"w\"))==NULL){printf(\"打开文件失败\\n\");exit(1);}do{s=shuru();a=strlen(s);fwrite(fwrite(s,sizeof(char),a,p);free(s);printf(\"是否继续输入?\");scanf(\"%c\",}while(tolower(c)==\'y\');fclose(p);p=fopen(m,\"r\");while(1){fread(if(feof(p))break;s=(char*)malloc(sizeof(char)*(a1));fread(s,sizeof(char),a,p);s[a]=\'\\0\';printf(\"%s\\n\",s);free(s);}fclose(p);return0;}char*shuru(void){char*t=NULL,*s=NULL;inti=0,j=0,b=A;s=(char*)malloc(A*sizeof(char));fflush(stdin);while((s=getchar())!=\'\\n\')if(i==b){b=2;t=(char*)malloc(sizeof(char)*b);for(j=0;ji;j)t[j]=s[j];free(s);s=t;t=NULL;}s[i-1]=\'\\0\';returns;}任意长度字符串写入文件#defineA10intmain(void){fpos_t*k=NULL;FILE*p=NULL,*p1=NULL;char*m=\"D:\\\\我的文档\\\\c.txt\",*m1=\"D:\\\\我的文档\\\\d.txt\",*s=(char*)malloc(A);inti=0,j=0,a=0;if(!(p=fopen(m,\"r\"))){printf(\"打开文件失败\\n\");exit(1);}while(1){fread(if(feof(p))break;if(a=A){free(s);s=(char*)malloc(a1);}fread(s,sizeof(char),a,p);i;}rewind(p);k=(fpos_t*)malloc(sizeof(fpos_t)*i);for(j=0;ji;j){fgetpos(p,kj);fread(fread(s,a,1,p);}if(!(p1=fopen(m1,\"w\"))){printf(\"打开文件失败\\n\");exit(1);}for(j=i-1;j=0;j--){fsetpos(p,kj);fread(fwrite(fread(s,a,1,p);fwrite(s,a,1,p1);}fclose(p);fclose(p1);if(!(p1=fopen(m1,\"r\"))){printf(\"打开文件失败\\n\");exit(1);}for(j=0;ji;j){fread(fread(s,a,1,p1);s[a]=\'\\0\';printf(\"%s\\n\",s);}fclose(p1);free(k);free(s);/*这一行没有就正确*/return0;}反向读取文件再写入一个新文件,释放内存就出错,求高手
|