想用c语言实现字符串的翻转,其中原始字符串在f1.txt,输出结果到f2.txt。我使用1024个char的内存空间,然后用头插的方法写入新文件,实现翻转。但是每次使用fseek定位到文件头部之后就覆盖写入,请教大神解决办法!#include#include#define BUFFER_SIZE 10int main(int argc,char **argv){ char *buffer; FILE *f1,*f2; int read; int i = 0; buffer = malloc(BUFFER_SIZE); f1 = fopen("f1.txt","r"); f2 = fopen("f2.txt","r+"); while(!feof(f1)) { read = fread(buffer,sizeof(char),BUFFER_SIZE,f1); i = 0; while(i < read) { fwrite(&buffer[read - i -1],sizeof(char),1,f2); i++; } fseek(f2,0L,SEEK_SET); } fclose(f1); fclose(f2); free(buffer); return 1;}
文件头部插入很麻烦,有三种方法:
将f2.txt读出到内存;将f1.txt运算的结果写到f2.txt的头上,再续写f2.txt的原内容,注意打开f2.txt要用"rw"属性;
新键个f3.txt;将f1.txt运算的结果写入后,再读f2.txt写入,关闭f3.txt后将f2.txt删除,改f3.txt文件名为f2.txt。一般是这么做的。
最后一种避免改名,先打开f2.txt读,建立f3.txt,将f2.txt原样写入,然后f2.txt就可以从头覆盖写入f1.txt的处理结果,再读取f3.txt内容续写;最后删除f3.txt。
先保存文档(如txt)内容。
清空文档。
写入要写入的部分。
写入原文件内容。