如何在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;
}

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2018-02-28
open函数打开,read函数读出数据到数组中,write函数写到另外一个文件中。本回答被网友采纳
第2个回答  2016-09-02
FILE 基本操作,可以帮你写追问

可以麻烦吗?

追答

看我头像