c语言从文件的头部,不覆盖写入
想用c语言实现字符串的翻转,其中原始字符串在f1.txt,输出结果到f2.txt。我使用1024个char的内存空间,然后用头插的方法写入新文件,实现翻转。但是每次使用f...
想用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。
展开全部
#include <stdio.h>
#include <stdlib.h>
#define BUFFER_SIZE 2
int 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","w+"); // 使用创建模式 w+
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,0,SEEK_END); // 跳至文件末尾
}
fclose(f1);
fclose(f2);
free(buffer);
return 0;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
先保存文档(如txt)内容。
清空文档。
写入要写入的部分。
写入原文件内容。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
看看,等一下再修改答案
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询