一、文件讀寫的基本操作
文件讀寫是一項常見的操作。在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
微信掃一掃
支付寶掃一掃