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

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

文章目录

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

二、文本文件加密

三、文本文件解密





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


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


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

 


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


char *fgets(char *str, int n, FILE *stream)


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


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


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



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


int feof(FILE *stream)



完整代码示例 :


#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;
}



执行结果 :


image.png






二、文本文件加密


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


以读的方式打开文件 :


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


以写的方式打开文件 :


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

                                 


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


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

                           


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


// 字符串的数组            
char s[1024] = {0};  
// 读取文件到 s 数组中         
fgets(s, sizeof(s), p);


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


// 字符串的数组            
char s[1024] = {0};  
// 将读取到的数据写入到 p2 文件中      
fputs(s, p2);

       



完整代码示例 :


#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++;
    }
}



目录
相关文章
|
8月前
|
存储 C语言
`scanf`是C语言中用于按格式读取标准输入的函数
`scanf`是C语言中用于按格式读取标准输入的函数,通过格式字符串解析输入并存入指定变量。需注意输入格式严格匹配,并建议检查返回值以确保读取成功,提升程序健壮性。
1430 0
|
10月前
|
安全 C语言
C语言中的字符、字符串及内存操作函数详细讲解
通过这些函数的正确使用,可以有效管理字符串和内存操作,它们是C语言编程中不可或缺的工具。
435 15
|
11月前
|
存储 Java 数据安全/隐私保护
Java技术栈揭秘:Base64加密和解密文件的实战案例
以上就是我们今天关于Java实现Base64编码和解码的实战案例介绍。希望能对你有所帮助。还有更多知识等待你去探索和学习,让我们一同努力,继续前行!
663 5
|
存储 安全 数据安全/隐私保护
Hyper V文件复制安全:加密与访问控制
在Hyper-V环境中,确保文件复制的安全性至关重要。主要措施包括:启用数据加密、使用HTTPS协议和磁盘加密技术(如BitLocker)保护数据传输和存储;通过身份验证、权限管理和审核日志控制访问;定期更新补丁、实施网络隔离及制定备份恢复策略。这些多层次的安全措施共同防止未经授权的访问和数据泄露,保障数据安全。
Hyper V文件复制安全:加密与访问控制
|
人工智能 Java 程序员
一文彻底搞清楚C语言的函数
本文介绍C语言函数:函数是程序模块化的工具,由函数头和函数体组成,涵盖定义、调用、参数传递及声明等内容。值传递确保实参不受影响,函数声明增强代码可读性。君志所向,一往无前!
597 1
一文彻底搞清楚C语言的函数
|
存储 编译器 C语言
【C语言程序设计——函数】分数数列求和2(头歌实践教学平台习题)【合集】
函数首部:按照 C 语言语法,函数的定义首部表明这是一个自定义函数,函数名为fun,它接收一个整型参数n,用于指定要求阶乘的那个数,并且函数的返回值类型为float(在实际中如果阶乘结果数值较大,用float可能会有精度损失,也可以考虑使用double等更合适的数据类型,这里以float为例)。例如:// 函数体代码将放在这里函数体内部变量定义:在函数体中,首先需要定义一些变量来辅助完成阶乘的计算。比如需要定义一个变量(通常为float或double类型,这里假设用float。
658 3
|
云安全 安全 数据建模
《数字证书:互联网世界的"身份证"与"防盗门"》 ——揭秘网络安全背后的加密江湖
在2023年某深夜,上海陆家嘴金融公司机房遭遇黑客攻击,神秘青铜大门与九大掌门封印的玉牌突现,阻止了入侵。此门象征数字证书,保障网络安全。数字证书如验钞机识别假币,保护用户数据。它通过SSL/TLS加密、CA认证和非对称加密,构建安全通信。证书分为DV、OV、EV三类,分别适合不同场景。忽视证书安全可能导致巨额损失。阿里云提供一站式证书服务,助力企业部署SSL证书,迎接未来量子计算和物联网挑战。
|
安全 算法 网络协议
【网络原理】——图解HTTPS如何加密(通俗简单易懂)
HTTPS加密过程,明文,密文,密钥,对称加密,非对称加密,公钥和私钥,证书加密
|
SQL 安全 网络安全
网络安全与信息安全:关于网络安全漏洞、加密技术、安全意识等方面的知识分享
随着互联网的普及,网络安全问题日益突出。本文将从网络安全漏洞、加密技术和安全意识三个方面进行探讨,旨在提高读者对网络安全的认识和防范能力。通过分析常见的网络安全漏洞,介绍加密技术的基本原理和应用,以及强调安全意识的重要性,帮助读者更好地保护自己的网络信息安全。
328 10
|
存储 SQL 安全
网络安全与信息安全:关于网络安全漏洞、加密技术、安全意识等方面的知识分享
随着互联网的普及,网络安全问题日益突出。本文将介绍网络安全的重要性,分析常见的网络安全漏洞及其危害,探讨加密技术在保障网络安全中的作用,并强调提高安全意识的必要性。通过本文的学习,读者将了解网络安全的基本概念和应对策略,提升个人和组织的网络安全防护能力。