如何在C语言中读取一个文件中的一段字符串去另一个新文件?
展开全部
分析:程序的逻辑很简单。程序必须打开两个文件,以可读的方式打开一个已有文件和以可写的方式打开一个新文件,后将已有文件中的内容,暂时存放在内存中,再写入新的文件,后关闭所有文件,程序结束。
步骤1:首先需要声明两个文件指针,并让它们分别指向打开的旧文件和新文件,并检查文件是否被打开,以下是代码:
FILE *f_old = NULL; //指向旧文件的文件指针;
FILE *f_new = NULL; //指向新文件的文件指针;
const char *old_name = "D:\\temp\\old.txt"; //假设旧文件是D盘temp文件夹中的old.txt文件(字符串中输入'\'符号要用两个连续的'\'符号;
const char *new_name = "D:\\temp\\new.txt"; //假设新文件是D盘temp文件夹中的new.txt文件;
if((f_old = fopen(old_name,"r")) == NULL) //以只读方式打开旧文件并检查,如果打开失败,程序将会结束,并在屏幕显示一条信息提示;
{
printf("old.txt文件打开失败!\n");
return 1;
}
if((f_new = fopen(new_name,"w")) == NULL) //以只写方式打开新文件并检查,如果打开失败,程序将会结束,并在屏幕显示一条信息提示;
{
printf("nwe.txt文件打开失败!\n");
return 1;
}
步骤2:打开两个文件后,就需要读出旧文件内容,并暂时储存在一段固定大小的内存中,再写入新的文件。还需要一个循环来重复这项工作,直到文件末尾,以下是代码:
char temp[1024] = {0}; //声明大小为1024(可以更大,但不推荐)的字符串,并初始化为0;
while(fgets(temp,1024,f_old)) //因为并不知道要循环多少次,所以推荐使用while循环,当没有内容可读时,循环结束;
fputs(temp,f_new); //使用fputs函数将读出的内容写入新的文件;
步骤3:现在已经将旧文件的内容全部写入到了新文件中,接下来我们来做一些收尾工作,关闭文件,放空指针,以下是代码:
fclose(f_old); //关闭旧文件;
fclose(f_new); //关闭新文件;
f_old = f_new = NULL; //让两个文件指针指向空;
任务完成,现在可以去看看新文件里的内容了。下面是完整代码:
#include <stdio.h> //所有代码只需要stdio.h头文件;
int main(void)
{
FILE *f_old = NULL; //旧文件指针;
FILE *f_new = NULL; //新文件指针;
const char *old_name = "D:\\temp\\old.txt"; //旧文件名,可自定义;
const char *new_name = "D:\\temp\\new.txt"; //新文件名,可自定义
if((f_old = fopen(old_name,"r")) == NULL) //打开并检查旧文件指针;
{
printf("old.txt文件打开失败!\n"); //若打开失败后会显示一条提示信息;
return 1; //返回1,程序非正常结束;
}
if((f_new = fopen(new_name,"w")) == NULL) //打开并检查新文件指针;
{
printf("nwe.txt文件打开失败!\n"); //若打开失败后会显示一条提示信息;
return 1; //返回1,程序非正常结束;
}
char temp[1024] = {0}; //申明并初始化一个中转字符数组,大小可自定义;
while(fgets(temp,1024,f_old)) //while循环使用fgets函数,读取旧文件内容暂时存放到temp,当无内容可读时,循环结束;
fputs(temp,f_new); //使用fputs函数,每次迭代将temp的内容写入新文件中;
fclose(f_old); //关闭旧文件;
fclose(f_new); //关闭新文件;
f_old = f_new = NULL; //将两个文件指针指向空;
return 0;
}
展开全部
open函数打开,read函数读出数据到数组中,write函数写到另外一个文件中。
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
FILE 基本操作,可以帮你写
追问
可以麻烦吗?
追答
看我头像
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询