一、文件讀寫的基本操作
文件讀寫是一項常見的操作。在C語言中,我們可以使用stdio.h庫中的函數來進行文件讀寫操作。在使用這些函數時,我們需要首先打開文件,然後讀取或寫入文件內容,最後關閉文件。
下面是一個使用C語言stdio庫中文件讀寫函數實現的讀取文件內容並輸出在控制台的示例:
#include <stdio.h> int main() { char *file_name = "test.txt"; FILE *fp = fopen(file_name, "r"); if (fp == NULL) { printf("Can not open file.\n"); return -1; } char buf[1024]; while (fgets(buf, 1024, fp) != NULL) { printf("%s", buf); } fclose(fp); return 0; }
其中,fopen函數的第一個參數表示文件的名稱,第二個參數表示文件的打開方式。上述代碼中打開方式為「r」,即以只讀的方式打開文件。
二、二進位讀寫操作
二進位讀寫操作也是非常常見的操作,比如對於圖片等二進位文件的讀寫。在C語言中,我們也可以使用stdio庫中的fread和fwrite函數進行二進位讀寫操作。
下面是一個使用fread函數讀取二進位文件並輸出在控制台的示例:
#include <stdio.h> int main() { char *file_name = "image.jpg"; FILE *fp = fopen(file_name, "rb"); if (fp == NULL) { printf("Can not open file.\n"); return -1; } char buf[1024]; size_t count; while ((count = fread(buf, 1, 1024, fp)) > 0) { for (int i = 0; i < count; i++) { printf("%02X", buf[i] & 0xFF); } } fclose(fp); return 0; }
其中,fread函數的第一個參數為讀入數據的地址,第二個參數為每個數據塊的大小,第三個參數為讀入的數據塊的數量,第四個參數為文件指針。
三、以追加的方式寫入文件
在一些情況下,我們需要在文件中追加新的內容。在C語言stdio庫中,我們可以使用「a」方式打開文件,並使用fprintf函數對文件進行操作。
下面是一個使用fprintf函數以追加的方式寫入文件的示例:
#include <stdio.h> int main() { char *file_name = "test.txt"; FILE *fp = fopen(file_name, "a"); if (fp == NULL) { printf("Can not open file.\n"); return -1; } char *text = "This is a new line.\n"; fprintf(fp, "%s", text); fclose(fp); return 0; }
四、以二進位的形式寫入文件
在一些需要將結構體等數據類型寫入文件,並在讀取時還原其結構的情況下,我們需要以二進位的形式將數據寫入文件。在C語言stdio庫中,我們可以使用fwrite函數對結構體等數據類型進行二進位寫入。
下面是一個使用fwrite函數以二進位的形式寫入文件的示例:
#include <stdio.h> typedef struct { int id; char name[20]; } Person; int main() { char *file_name = "person.bin"; FILE *fp = fopen(file_name, "wb"); if (fp == NULL) { printf("Can not open file.\n"); return -1; } Person person = {1, "Tom"}; fwrite(&person, sizeof(Person), 1, fp); fclose(fp); return 0; }
需要注意的是,在使用fwrite函數寫入數據時,需要指定寫入數據的地址、數據大小和數據個數三個參數。
五、以二進位的形式讀取文件
在將結構體等數據類型寫入文件後,我們需要以二進位形式讀取文件,並還原數據結構。在C語言stdio庫中,我們可以使用fread函數對結構體等數據類型進行二進位讀取。
下面是一個使用fread函數以二進位形式讀取文件並還原到結構體的示例:
#include <stdio.h> typedef struct { int id; char name[20]; } Person; int main() { char *file_name = "person.bin"; FILE *fp = fopen(file_name, "rb"); if (fp == NULL) { printf("Can not open file.\n"); return -1; } Person person; fread(&person, sizeof(Person), 1, fp); printf("id: %d, name: %s\n", person.id, person.name); fclose(fp); return 0; }
需要注意的是,在使用fread函數讀取數據時,需要指定讀取數據的地址、數據大小和數據個數三個參數。
原創文章,作者:NXKPK,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/349283.html