问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501
你好,欢迎来到懂视!登录注册
当前位置: 首页 - 正文

如何在C语言中读取一个文件中的一段字符串去另一个新文件?

发布网友 发布时间:2022-06-11 02:22

我来回答

3个回答

热心网友 时间:2022-06-14 02:41

分析:程序的逻辑很简单。程序必须打开两个文件,以可读的方式打开一个已有文件和以可写的方式打开一个新文件,后将已有文件中的内容,暂时存放在内存中,再写入新的文件,后关闭所有文件,程序结束。


步骤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;
}

热心网友 时间:2022-06-14 02:42

open函数打开,read函数读出数据到数组中,write函数写到另外一个文件中。

热心网友 时间:2022-06-14 02:42

FILE 基本操作,可以帮你写追问可以麻烦吗?

追答看我头像

声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。
E-MAIL:11247931@qq.com
wow术师学什么副职 圈里是20以上数字的符号怎么打制的 谁能给个能复制的就行 WORD不能复制... WOW账号副职问题 银行卡是不是不收年费了 明日之后特制披萨属性图鉴介绍_明日之后特制披萨属性图鉴是什么_百度知 ... 为什么银行卡要收10元的年费?凭什么?有文件吗? 明日之后烤海猪鱼图鉴介绍_明日之后烤海猪鱼图鉴是什么 wow副职的选择 已婚女人为什么喜欢发照片给我? 圈里是20以上数字的符号怎么打,11到20的百度到复制的谁能给个能... c语言中从文件中按行读取字符串,并进行相应操作。 这种裤子叫什么,中间连着块布,或者带子 一条裤子二个裤腿中间有一根带子连接那是什么裤子 有一个品牌牛仔裤腰上带一个带子,叫什么牌子 2根带子的背带裤和连衣背带裤哪种好看? ...是把男人的精子放到女性的阴道口旁边,这种会怀孕吗? 男生的精子染到了女生得内裤上,女生会不会怀孕呢。而且到现在还有味道... 男人吃了自己的精子会不会怀孕啊 2.8英寸,分辨率240*320,触屏,手机有哪些??? 手机屏幕尺寸怎么算比如2.8寸 合作开发 委托开发 历经万能,徒劳无功是什么动物? 解一声残角断焦门,徒劳无功苦奔波,风池嫠禁听丝纶,衷肠闷损千里途是... 徒劳无功苦奔波,百难千空苦已深。三餐难继费沉吟,一代名君人人夸。打... 如何删除上面的转账信息?支付宝的 喜迁莺清明节古诗带拼音 win10用U盘重装系统时候出现这个,不显示磁盘选项? 清空修改内容是什么意思 机厂清空是什么意思 尾库清空什么意思 盆栽葡萄的种植方法!拜托各位了 3Q 如何用葡萄籽做盆栽 圣树唤歌术士有哪些 圣树唤歌巫师有哪些 圣树唤歌用的辅助选哪个? 怎么找回删掉的微信好友 怎吗查IP 怎样用散点图生成函数??谢谢 了解猪笼草有几大特点. 猪笼草开花吗,猪笼草好不好 了解猪笼草有几大特点.急急急! 我想百度一下 我想百度一下成都有几百万人口 我想百度一下1704.5平方米等于多少亩? 百度一下符号下载我想把百度一下放到桌面,方便直接上网,怎样操作 我想百度一下足字旁加个洼地的洼去掉三点水怎么读′? 我想百度一下q q215537552空间 想利用春节假期学习flash制作,能在短时间内初步学会吗? ...一下百度一下那个我的快递到了哪里?我想百度一下,我的快递到了哪里... 2010春节祝福flash
  • 焦点

最新推荐

猜你喜欢

热门推荐