【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 中的文件進行解密 ;
解密過程 :
解密結果 :
ABCD Hello World CSDN Github總結
以上是生活随笔為你收集整理的【C 语言】文件操作 ( 读文本文件 | 文本加密解密 | fgets 函数 | fputs 函数 )的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【C 语言】文件操作 ( 写文本文件 |
- 下一篇: 【C 语言】文件操作 ( 文件结尾判定