從多個方面詳細闡述cstdiofile

一、文件讀寫的基本操作

文件讀寫是一項常見的操作。在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-hk/n/349283.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
NXKPK的頭像NXKPK
上一篇 2025-02-14 17:47
下一篇 2025-02-15 17:09

相關推薦

發表回復

登錄後才能評論