📜  C |输入和输出|问题12(1)

📅  最后修改于: 2023-12-03 15:29:44.222000             🧑  作者: Mango

C语言 输入和输出问题12

在C语言中,有时候需要将一些数据以二进制的形式读写,这时候就需要使用二进制输入输出函数。C语言中提供了以下的二进制输入输出函数:

fread();
fwrite();
fread函数

fread()函数是C语言中二进制输入函数中使用最频繁的函数之一。下面是fread()函数的声明:

size_t fread(void *ptr, size_t size, size_t count, FILE *stream);

参数说明:

ptr:指向数据块首地址的指针。这个指针必须是void类型的。也就是说,这个指针指向的数据可以是任意类型的。不过在程序中最好指向某个类型的数据,这样程序比较稳定。

size:要读取的每个数据项的size。

count:要读取的数据项的个数。

stream:文件指针。

返回值说明:

返回实际读取的数据项个数。

fwrite函数

fwrite()函数是C语言中二进制输出函数中使用最频繁的函数之一。下面是fwrite()函数的声明:

size_t fwrite(const void *ptr, size_t size, size_t count, FILE *stream);

参数说明:

ptr:指向数据块首地址的指针。这个指针必须是void类型的。也就是说,这个指针指向的数据可以是任意类型的。不过在程序中最好指向某个类型的数据,这样程序比较稳定。

size:要写入的每个数据项的size。

count:要写入的数据项的个数。

stream:文件指针。

返回值说明:

返回实际写入的数据项个数。

例子
#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[]) {
    /* 二进制读写文件 */
    FILE *fp = NULL;
    char buffer[20];
    char wrbuffer[20] = { 'a', 'b', 'c' };
    size_t result;
    fp = fopen("file.bin", "wb");
    if (fp == NULL) {
        printf("文件打开失败\n");
        exit(1);
    }
    result = fwrite(wrbuffer, sizeof(char), sizeof(wrbuffer), fp);
    if (result != sizeof(wrbuffer)) {
        printf("写入文件失败\n");
        exit(1);
    } else {
        printf("写入文件成功\n");
    }
    fclose(fp); 
    fp = fopen("file.bin", "rb");
    if (fp == NULL) {
        printf("文件打开失败\n");
        exit(1);
    }
    result = fread(buffer, sizeof(char), sizeof(wrbuffer), fp);
    if (result != sizeof(wrbuffer)) {
        printf("读取文件失败\n");
        exit(1);
    } else {
        printf("读取文件成功\n");
    }
    fclose(fp);
    return 0;
}

在这个例子中,我们打开一个二进制文件,并用fwrite()函数向这个文件写入一些数据。接着,我们使用fread()函数从文件中读取这些数据。