首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> C >> 關於C

C 語言檔案 IO 實戰:從基礎操作到 XOR 加密完整範例

     編輯:關於C

檔案 IO 四步驟

  1. 建立/開啟檔案 → fopen 取得 FILE*
  2. 建立緩衝區
  3. 迴圈讀寫(fgetc/fputc、fgets/fputs、fread/fwrite)
  4. 關閉檔案 → fclose

fopen 模式速查(含二進制)

r  rb  r+  rb+  // 唯讀/讀寫,檔案需存在
w  wb  w+  wb+  // 建立/截斷,唯寫/讀寫
a  ab  a+  ab+  // 附加,唯寫/讀寫

文字檔讀寫範例

// 讀取
FILE *fp = fopen(path, "r");
char buf[1024];
while (fgets(buf, sizeof(buf), fp)) printf("%s", buf);
fclose(fp);

// 寫入(覆蓋模式)
fp = fopen(path, "w");
fputs("Hello\nWorld\n", fp);
fclose(fp);

二進制檔複製(圖片/影片通用)

FILE *rfp = fopen(src, "rb");
FILE *wfp = fopen(dst, "wb");
int buf[1024];
size_t len;
while ((len = fread(buf, sizeof(int), 1024, rfp)) != 0) {
    fwrite(buf, sizeof(int), len, wfp);
}
fclose(rfp); fclose(wfp);

XOR 檔案加密/解密實作

原理:x ^ k ^ k = x。同一函數可雙向操作。

void xor_file(const char *in, const char *out, unsigned char key) {
    FILE *fin = fopen(in, "rb");
    FILE *fout = fopen(out, "wb");
    int ch;
    while ((ch = fgetc(fin)) != EOF) fputc(ch ^ key, fout);
    fclose(fin); fclose(fout);
}

// 使用
xor_file("plain.txt", "enc.bin", 0xAA);  // 加密
xor_file("enc.bin", "dec.txt", 0xAA);    // 解密

進階延伸

  • 密碼派生金鑰(PBKDF2)替代固定金鑰
  • 分塊加密 + IV 向量(CBC 模式)
  • 結合 JNI 供 Android NDK 呼叫

總結

掌握 fopen 模式、三層級讀寫 API、二進制流處理與錯誤檢查,即可構建健壯的檔案處理模組。XOR 範例展示位元運算在加密中的應用,為後續學習 JNI 奠基。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved