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

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

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

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

}

楼上给的很详细的,system.IO给的一个属性叫File.LastWriteTime即你电脑里看见的 修改时间。

代码稍微更改

 string filename = Directory.GetFiles(@"c:/我的文档").Select(x => new { FileName = x, LastWritetime = File.GetLastWriteTime(x) })

 .OrderByDescending(x =>唯帆 x.LastWritetime).ElementAt(1).FileName

这个filename 即你要的第二近的文件的完整路径。

至于内容,C#可以读取文件指悔雹流,

Stream fs = File.Open("filename ", FileMode.Open)

fs即 在C#中,读取到的文件。前游


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/12205034.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-21
下一篇 2023-05-21

发表评论

登录后才能评论

评论列表(0条)

保存