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

📅  最后修改于: 2023-12-03 14:39:41.078000             🧑  作者: Mango

C | 输入和输出 | 问题8

在编程中,我们经常需要读取和写入二进制数据。C语言提供了一些函数和宏来处理二进制数据的输入和输出。本文介绍了有关二进制数据的输入和输出的C语言函数和宏。

fread和fwrite函数

freadfwrite是C语言中用于读取和写入二进制数据的函数。这两个函数的原型分别是:

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

这里,ptr是指向要读取或写入数据的缓冲区的指针,size是每个数据项的字节数,count是要读取或写入的数据项数,stream是指向文件的指针。这两个函数均返回成功读取或写入的数据项数。

以下是一个使用freadfwrite的例子(以读取和写入一个整数为例):

#include <stdio.h>

int main() {
    int x = 100;
    FILE *fp = fopen("data.bin", "wb");
    fwrite(&x, sizeof(x), 1, fp);
    fclose(fp);

    int y;
    fp = fopen("data.bin", "rb");
    fread(&y, sizeof(y), 1, fp);
    fclose(fp);
    printf("%d\n", y);
    return 0;
}

在上面的例子中,我们将整数x写入名为data.bin的二进制文件中,并从该文件中读取到整数y中。

fprintf和fscanf函数

fprintffscanf是C语言中用于格式化输入和输出的函数。这两个函数的原型分别是:

int fprintf(FILE *stream, const char *format, ...);
int fscanf(FILE *stream, const char *format, ...);

这里,stream是指向文件的指针,format是格式化字符串,还有其他可选参数(这里用省略号表示)。这两个函数均返回成功读取或写入的数据项数。

以下是一个使用fprintffscanf的例子(以读取和写入一个整数为例):

#include <stdio.h>

int main() {
    int x = 100;
    FILE *fp = fopen("data.txt", "w");
    fprintf(fp, "%d", x);
    fclose(fp);

    int y;
    fp = fopen("data.txt", "r");
    fscanf(fp, "%d", &y);
    fclose(fp);
    printf("%d\n", y);
    return 0;
}

在上面的例子中,我们将整数x写入名为data.txt的文本文件中,并从该文件中读取到整数y中。

其他输出函数和宏

除了fprintf之外,C语言还提供了一些其他用于二进制数据的输出函数和宏。以下是一些重要的函数和宏:

  • putcputchar函数:将一个字符写入文件。
  • fputsputs函数:将一个字符串写入文件。
  • fwrite函数:将二进制数据写入文件。
  • EOF宏:表示文件结束(End-Of-File)。
其他输入函数和宏

除了fscanf之外,C语言还提供了一些其他用于二进制数据的输入函数和宏。以下是一些重要的函数和宏:

  • getcgetchar函数:从文件中读取一个字符。
  • fgetsgets函数:从文件中读取一行字符串。
  • fread函数:从文件中读取二进制数据。
  • EOF宏:表示文件结束(End-Of-File)。
总结

本文介绍了C语言中用于读取和写入二进制数据的函数和宏。我们介绍了freadfwritefprintffscanf等函数和宏的用法。这些函数和宏非常有用,能够方便地读取和写入二进制数据。