Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >【C 语言】文件操作 ( 读文本文件 | 文本加密解密 | fgets 函数 | fputs 函数 )

【C 语言】文件操作 ( 读文本文件 | 文本加密解密 | fgets 函数 | fputs 函数 )

作者头像
韩曙亮
发布于 2023-03-29 05:03:12
发布于 2023-03-29 05:03:12
1.4K00
代码可运行
举报
运行总次数:0
代码可运行

文章目录

一、从文件中读取多行文本


首先 , 以读的方式打开文件 ;

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
// 打开一个文件 , 以读的方式                              
// r : 使用读的方式打开一个文件 ;                          
FILE *p = fopen("D:\\a.txt", "r");             

然后 , 调用 fgets 方法 , 从文件中读取数据 ;

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
char *fgets(char *str, int n, FILE *stream)

char *str 参数 : 将文件中的文本读取到哪里去 ;

int n 参数 : 读取多少数据 , 单位字节 ;

FILE *stream 参数 : 读取哪个文件中的数据 ;

多行文本读取 : 通过 feop 函数判定是否读取到了文件结尾 , 如果已经读取到了文件结尾 , 则返回 true ;

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
int feof(FILE *stream)

完整代码示例 :

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#include <stdio.h>

int main()
{
    // 打开一个文件 , 以读的方式
    // r : 使用读的方式打开一个文件 ;
    FILE *p = fopen("D:\\a.txt", "r");

    // 从命令行中接收字符串的数组
    char s[1024] = {0};
    while (!feof(p))
    {
        memset(s, 0, sizeof(s));
        // 读取文件到 s 数组中
        fgets(s, sizeof(s), p);
        // 打印读取的数据
        printf("%s", s);
    }

    // 关闭文件
    fclose(p);
    printf("Process Exit!");
    return 0;
}

执行结果 :

二、文本文件加密


打开两个文件 , 从一个文件中读取文本 , 进行加密 , 然后再写出到另一个文件中 ;

以读的方式打开文件 :

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
// 打开一个文件 , 以读的方式                       
// r : 使用读的方式打开一个文件 ;                   
FILE *p = fopen("D:\\a.txt", "r");      

以写的方式打开文件 :

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
// 打开一个文件 , 以写的方式                                                         
// w : 如果文件不存在 , 就创建文件 , 如果文件存在 , 就将该文件覆盖 , 总之写出的是一个新文件 ;                 
FILE *p2 = fopen("D:\\b.txt", "w");                                       

加密文件 : 传入一个字符串指针 , 逐个遍历字符串中的字符 , 只要字符不为 ‘\0’ , 也就是 ASCII 码 0 值 , 就继续遍历 , 循环控制变量 *s 不为 0 即可 ; 加密操作就是将字符自增即可 ;

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
void encode(char* s)                         
{                                            
    // 只要字符串的字符 不是 '\0' , 就继续进行遍历            
    while(*s){                               
        // 逐个遍历字符串中的字符                       
        (*s)++;                              
        // 指针自增, 遍历下一个字符                     
        s++;                                 
    }                                        
}                                            

读取文件 : 使用 fgets 方法读取文件中的字符串 , 读取当前位置到 ‘\n’ ;

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
// 字符串的数组            
char s[1024] = {0};  

// 读取文件到 s 数组中         
fgets(s, sizeof(s), p);

写出文件 : 调用 fputs 方法 , 将字符串写出到文件中 ;

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
// 字符串的数组            
char s[1024] = {0};  

// 将读取到的数据写入到 p2 文件中      
fputs(s, p2);             

完整代码示例 :

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#include <stdio.h>

void encode(char* s);

int main()
{
    // 打开一个文件 , 以读的方式
    // r : 使用读的方式打开一个文件 ;
    FILE *p = fopen("D:\\a.txt", "r");

    // 打开一个文件 , 以写的方式
    // w : 如果文件不存在 , 就创建文件 , 如果文件存在 , 就将该文件覆盖 , 总之写出的是一个新文件 ;
    FILE *p2 = fopen("D:\\b.txt", "w");

    // 字符串的数组
    char s[1024] = {0};

    while (!feof(p))
    {
        memset(s, 0, sizeof(s));
        // 读取文件到 s 数组中
        fgets(s, sizeof(s), p);

        // 加密操作
        encode(s);

        // 将读取到的数据写入到 p2 文件中
        fputs(s, p2);

        // 打印读取的数据
        printf("%s", s);
    }

    // 关闭文件
    fclose(p);
    fclose(p2);

    printf("Process Exit!");

    return 0;
}

void encode(char* s)
{
    // 只要字符串的字符 不是 '\0' , 就继续进行遍历
    while(*s){
        // 逐个遍历字符串中的字符
        (*s)++;
        // 指针自增, 遍历下一个字符
        s++;
    }
}

执行结果 :

加密后的结果 :

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
BCDEIfmmp!XpsmeDTEOHjuivc

三、文本文件解密


打开两个文件 , 从一个文件中读取文本 , 进行解密 , 然后再写出到另一个文件中 ;

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#include <stdio.h>

void encode(char* s);
void decode(char* s);

int main()
{
    // 打开一个文件 , 以读的方式
    // r : 使用读的方式打开一个文件 ;
    FILE *p = fopen("D:\\b.txt", "r");

    // 打开一个文件 , 以写的方式
    // w : 如果文件不存在 , 就创建文件 , 如果文件存在 , 就将该文件覆盖 , 总之写出的是一个新文件 ;
    FILE *p2 = fopen("D:\\c.txt", "w");

    // 字符串的数组
    char s[1024] = {0};

    while (!feof(p))
    {
        memset(s, 0, sizeof(s));
        // 读取文件到 s 数组中
        fgets(s, sizeof(s), p);

        // 解密操作
        decode(s);

        // 将读取到的数据写入到 p2 文件中
        fputs(s, p2);

        // 打印读取的数据
        printf("%s", s);
    }

    // 关闭文件
    fclose(p);
    fclose(p2);

    printf("Process Exit!");

    return 0;
}

void encode(char* s)
{
    // 只要字符串的字符 不是 '\0' , 就继续进行遍历
    while(*s){
        // 逐个遍历字符串中的字符
        (*s)++;
        // 指针自增, 遍历下一个字符
        s++;
    }
}

void decode(char* s)
{
    // 只要字符串的字符 不是 '\0' , 就继续进行遍历
    while(*s){
        // 逐个遍历字符串中的字符
        (*s)--;
        // 指针自增, 遍历下一个字符
        s++;
    }
}

运行结果 :

将 b.txt 中的文件进行解密 ;

解密过程 :

解密结果 :

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
ABCD
Hello World
CSDN
Github
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021-05-26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
c语言基础学习10_文件操作01
============================================================================= ============================================================================= 涉及到的知识点有: 一、fopen函数。 二、fclose函数。 三、getc 和 putc 函数 1、通过getc和putc读写指定的文件、2、拷贝文件的代码。(一个一个字节的拷贝)、 3、改进版的代码:通过命令行参数,实现指定文件名的拷贝、4、文件的加密解密操作。(用getc和putc函数实现)。 四、fgets 和 fputs函数 1、fgets 和 fputs函数、2、拷贝文件的代码。(一行一行字节的拷贝)、3、文件的加密解密操作。(用fgets和fputs函数实现)、 4、课堂练习:超大文件排序、5、解析文件内容并追加结果。 五、fprintf 和 fscanf函数 1、课堂练习:运行的结果是打印出这个文件中年龄第二大人的姓名。 ============================================================================= ============================================================================= 文件操作
黑泽君
2018/10/11
2K0
江哥带你玩转C语言 | 17-文件操作
如果觉得文章对你有帮助,点赞、收藏、关注、评论,一键四连支持,你的支持就是江哥持续更新的动力
极客江南
2021/07/11
1K0
C语言——文件操作
磁盘上的文件是文件。 但是在程序设计中,我们一般谈的文件有两种:程序文件、数据文件
小李很执着
2024/06/15
1180
C语言——文件操作
C语言进阶-文件操作超详解
scanf/printf、fscanf/fprintf、sscanf/sprintf函数对比
用户9645905
2022/11/30
1K0
C语言进阶-文件操作超详解
C语言:文件操作
如果没有⽂件,我们写的程序的数据是存储在电脑的内存中,如果程序退出,内存回收,数据就丢失了,等再次运⾏程序,是看不到上次程序的数据的,如果要将数据进⾏持久化的保存,我们可以使⽤⽂件,因为文件是存放在硬盘上的
逆向-落叶
2024/10/28
1320
C语言:文件操作
【C 语言】文件操作 ( getc 和 putc 函数 )
逐个字节加密 : 使用 getc 函数读取一个字节 , 然后加密 , 再用 putc 函数写出一个字节到另外一个文件中 ;
韩曙亮
2023/03/29
1.2K0
【C 语言】文件操作 ( getc 和 putc 函数 )
C语言文件操作
没错,这还是为了应付计算机二级的文件操作选择题方面,在程序题中好像也曾出现过。我做了简单的复习,希望到时候能通过。
布衣者
2021/09/07
2.7K0
C语言文件操作
我们前面学习结构体时,写了通讯录的程序,当通讯录运行起来的时候,可以给通讯录中增加、删除数据,此时数据是存放在内存中,当程序退出的时候,通讯录中的数据自然就不存在了,等下次运行通讯录程序的时候,数据又得重新录入,如果使用这样的通讯录就很难受。我们在想既然是通讯录就应该把信息记录下来,只有我们自己选择删除数据的时候,数据才不复存在。 这就涉及到了数据持久化的问题,我们一般数据持久化的方法有,把数据存放在磁盘文件、存放到数据库等方式。 使用文件我们可以将数据直接存放在电脑的硬盘上,做到了数据的持久化
二肥是只大懒蓝猫
2023/03/30
4K0
C语言文件操作
【C语言】文件操作
在程序设计中,我们一般谈的文件有两种:程序文件、数据文件(从文件功能的角度来分类的)。
YoungMLet
2024/03/01
1160
【C语言】文件操作
C语言--文件操作
• stdin - 标准输⼊流,在⼤多数的环境中从键盘输⼊,scanf函数就是从标准输⼊流中读取数据。
阑梦清川
2025/02/24
970
C语言--文件操作
C语言从入门到实战——文件操作
C语言中的文件操作是通过使用文件指针来实现的。可以使用标准库中的函数来打开、读取、写入和关闭文件。
鲜于言悠
2024/03/20
4500
C语言从入门到实战——文件操作
C 语言文件操作详解
在 C 语言中,文件操作是一个非常重要的主题。无论是保存用户数据、配置程序、还是读写日志文件,掌握文件操作都能使你的程序更加灵活和实用。本文将带你深入了解 C 语言中的文件操作,帮助你从基础到进阶,逐步掌握文件操作的技巧。
平凡之路.
2024/10/09
2080
C 语言文件操作详解
【C 语言】文件操作 ( 读取文件中的结构体数组 | feof 函数使用注意事项 )
读取文件结构体时 , 可以循环读取文件中的数据 , 只使用一个结构体的内存空间即可 ;
韩曙亮
2023/03/29
1.7K0
【C 语言】文件操作 ( 读取文件中的结构体数组 | feof 函数使用注意事项 )
C语言----文件操作
如果没有⽂件,我们写的程序的数据是存储在电脑的内存中,如果程序退出,内存回收,数据就丢失了,等再次运⾏程序,是看不到上次程序的数据的,如果要将数据进⾏持久化的保存,我们可以使⽤⽂件。
凯子坚持C
2024/09/23
830
C语言----文件操作
C语言文件操作
我们前面学习结构体时,写通讯录的程序,当通讯录运行起来的时候,可以给通讯录中增加、删除数据,此时数据是存放在内存中,当程序退出的时候,通讯录中的数据自然就不存在了,等下次运行通讯录程序的时候,数据又得重新录入,如果使用这样的通讯录就很难受。
绝活蛋炒饭
2024/12/16
860
C语言文件操作
【C语言】文件操作
我们在写代码的过程中,有的时候某一些数据我们是想把它保存下来的,而不是说只有在程序运行的时候,这些数据才能被我们录入或显示出来,我们总会遇到数据持久化的场景,所以这时我们需要将数据保存下来,一般数据持久化的方式有,把数据存到磁盘文件里,或存放到数据库里面
举杯邀明月
2023/04/12
3.8K0
【C语言】文件操作
抽丝剥茧C语言(高阶)文件操作+练习
我们前面了解结构体时,写了通讯录的程序,当通讯录运行起来的时候,可以给通讯录中增加、删除数据,此时数据是存放在内存中,当程序退出的时候,通讯录中的数据自然就不存在了,等下次运行通讯录程序的时候,数据又得重新录入,如果使用这样的通讯录就很难受。(前面我已经把通讯录完善了) 我们在想既然是通讯录就应该把信息记录下来,只有我们自己选择删除数据的时候,数据才不复存在。 这就涉及到了数据持久化的问题,我们一般数据持久化的方法有,把数据存放在磁盘文件、存放到数据库等方式。 使用文件我们可以将数据直接存放在电脑的硬盘上,做到了数据的持久化。
有礼貌的灰绅士
2023/03/28
5410
抽丝剥茧C语言(高阶)文件操作+练习
C语言详解(文件操作)2
上篇文章中我们初步了解了文件的相关信息,文件的打开和关闭,以及文件的随机读写等 本篇文章将详细介绍一些文件顺序读写函数的作用、特点和用法,使我们更加方便地操作文件,还会讲到如何判定文件的结束等,内容可能有点多,请耐心看完哦
_小羊_
2024/10/16
760
C语言详解(文件操作)2
C语言进阶——文件操作
  文件——是我们生活中必不可缺的一部分,优秀的文件管理能使我们工作效率更高,比如上学时的点名册、平时记账的手账本、电脑中存储数据的各种文件夹等。数据构成文件,文件成就数据,因此我们需要学习C语言中的各种文件操作,使数据能够做到持久化存储。
北 海
2023/07/01
3010
C语言进阶——文件操作
【C语言】万字文件操作总结
涉及到了数据持久化的问题,我们一般数据持久化的方法有,把数据存放在磁盘文件、存放到数据库等方式。
平凡的人1
2022/11/15
5890
【C语言】万字文件操作总结
相关推荐
c语言基础学习10_文件操作01
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文