c fwrite fread

fwrite fread 是C语言标准库中的文件I/O操作函数。

fwrite 用于将内存中的数据块写入到文件中,函数原型如下:

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

参数解释:

  • ptr:指向内存数据块的指针。
  • size:要写入的每个元素的大小。
  • count:要写入的元素个数。
  • stream:指向FILE类型的文件对象的指针。
  • 返回值:成功时返回写入的元素个数,出错时返回0。

    举个例子,下面的代码将数据块写入文件:

    char buf[] = "Hello world\n";
    FILE *fp = fopen("output.txt", "wb"); // 以二进制写入方式打开文件
    if (fp != NULL) {
        fwrite(buf, sizeof(char), strlen(buf), fp);
        fclose(fp);
    

    fread用于从文件中读取数据到内存中,函数原型如下:

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

    参数解释:

  • ptr:指向内存数据块的指针。
  • size:要读取的每个元素的大小。
  • count:要读取的元素个数。
  • stream:指向FILE类型的文件对象的指针。
  • 返回值:成功时返回读取的元素个数,出错或到达文件尾时返回0。

    举个例子,下面的代码从文件中读取数据:

    char buf[1024];
    FILE *fp = fopen("input.txt", "rb"); // 以二进制读取方式打开文件
    if (fp != NULL) {
        size_t nread = fread(buf, sizeof(char), 1024, fp);
        fclose(fp);
        printf("Read %lu characters: %s\n", nread, buf);
    

    需要注意的是,fwritefread这两个函数对于二进制数据是直接进行复制的,对于文本数据则需要考虑编码格式等问题。同时,这两个函数都是阻塞式IO操作,因此在大量数据的读写操作中可能会造成性能问题。

  •