失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > 【C 语言】文件操作 ( 读文本文件 | 文本加密解密 | fgets 函数 | fputs 函数 )

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

时间:2020-06-10 11:22:18

相关推荐

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

执行结果 :

二、文本文件加密

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

以读的方式打开文件 :

// 打开一个文件 , 以读的方式 // 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++;}}

执行结果 :

加密后的结果 :

BCDEIfmmp!XpsmeDTEOHjuivc

三、文本文件解密

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

#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 中的文件进行解密 ;

解密过程 :

解密结果 :

ABCDHello WorldCSDNGithub

如果觉得《【C 语言】文件操作 ( 读文本文件 | 文本加密解密 | fgets 函数 | fputs 函数 )》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。