C语言中的各种文件读写方法小结

yizhihongxing

C语言中的各种文件读写方法小结

常用的文件打开模式

在C语言中,我们进行文件读写操作时需要调用fopen函数打开文件,并传入文件打开模式参数。常用的文件打开模式如下:

  • "r" : 只读模式,打开文件用于读取。如果文件不存在,打开文件失败并返回NULL。
  • "w" : 写入模式,打开文件用于写入。如果文件不存在,则创建新文件。如果文件已存在,该模式会将文件全部内容删除,再进行写入。
  • "a" : 追加模式,打开文件用于写入,文件指针将会定位到文件的末尾。如果文件不存在,则创建新文件。
  • "rb" : 二进制文件读取模式
  • "wb" : 二进制文件写入模式
  • "ab" : 二进制文件追加模式

从文件中读取数据

在C语言中读取文件数据的函数是fread。函数原型如下:

size_t fread(void *ptr, size_t size, size_t count, FILE *stream);
  • ptr:指向要读取内容存储的位置
  • size:每个数据类型占用的字节数
  • count:要读取的数据类型数量
  • stream:要读取的文件

读取文本文件示例代码如下:

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

#define DATA_SIZE 100

int main(void) {
    FILE *fp;
    char str[DATA_SIZE];

    fp = fopen("input.txt", "r");
    if (fp == NULL) {
        printf("Failed to open file input.txt\n");
        return 1;
    }

    while (fgets(str, DATA_SIZE, fp) != NULL) {
        printf("%s", str);
    }

    fclose(fp);
    return 0;
}

写入数据到文件中

在C语言中写入数据到文件的函数是fwrite。函数原型如下:

size_t fwrite(const void *ptr, size_t size, size_t nmemb, FILE *stream);
  • ptr:指向要写入内容存储的位置
  • size:每个数据类型占用的字节数
  • nmemb:要写入的数据类型数量
  • stream:要写入的文件

写入文本文件示例代码如下:

#include <stdio.h>

int main(void) {
    const char data[] = "This is a test data.\n";
    FILE *fp;

    fp = fopen("output.txt", "w");
    if (fp != NULL) {
        fwrite(data, sizeof(char), sizeof(data) / sizeof(char), fp);
        fclose(fp);
    }

    return 0;
}

使用fgetc和fputc函数进行文件读写

除了上述的fread和fwrite函数外,C语言还提供了fgetc和fputc函数用于读取和写入单个字符。

读取单个字符示例代码如下:

#include <stdio.h>

int main(void) {
    char ch;
    FILE *fp;

    fp = fopen("input.txt", "r");
    if (fp != NULL) {
        while ((ch = fgetc(fp)) != EOF) {
            putchar(ch);
        }
        fclose(fp);
    }

    return 0;
}

写入单个字符示例代码如下:

#include <stdio.h>

int main(void) {
    char ch;
    FILE *fp;

    fp = fopen("output.txt", "w");
    if (fp != NULL) {
        while ((ch = getchar()) != EOF) {
            fputc(ch, fp);
        }
        fclose(fp);
    }

    return 0;
}

以上就是C语言中的文件读写方法的详细讲解。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C语言中的各种文件读写方法小结 - Python技术站

(0)
上一篇 2023年6月26日
下一篇 2023年6月26日

相关文章

  • C++中静态存储区与栈以及堆的区别详解

    C++中静态存储区与栈以及堆的区别详解 在C++中,有三种主要的存储区域:静态存储区、栈和堆。它们在内存管理和生命周期方面有着不同的特点。下面将详细讲解它们之间的区别。 静态存储区 静态存储区是在程序运行期间一直存在的存储区域。它用于存储全局变量、静态变量和静态常量。这些变量在程序开始执行时被分配内存,并在程序结束时释放。静态存储区的特点如下: 静态存储区的…

    other 2023年8月1日
    00
  • 用电脑时我的系统总是重启为什么?

    针对“用电脑时我的系统总是重启”的问题,我们需要先了解可能导致系统重启的原因,再逐一排查解决。 可能导致系统重启的原因: 1.硬件问题:如电源故障、内存问题、硬盘问题等。 2.软件问题:如系统错误、病毒感染等。 3.过热:长时间使用、灰尘积聚等情况导致电脑过热,导致自动重启。 解决过程如下: 1.排查硬件问题 第一步,检查电源是否正常。可能存在电源老化或损坏…

    other 2023年6月26日
    00
  • 在idea中使用JaCoCo插件统计单元测试覆盖率的实现

    以下是关于在IDEA中使用JaCoCo插件统计单元测试覆盖率的完整攻略,包含两个示例说明: 1. 安装JaCoCo插件 首先,在IDEA中安装JaCoCo插件。打开IDEA,点击\”File\” -> \”Settings\” -> \”Plugins\”,搜索并安装\”JaCoCo\”插件。 2. 配置JaCoCo插件 在项目的pom.xml文…

    other 2023年10月19日
    00
  • MyBatis别名和settings设置方式

    MyBatis别名和settings设置方式攻略 1. 别名(Alias)的设置方式 在MyBatis中,可以使用别名来代替完整的类名。这样可以简化代码并提高代码的可读性。下面是设置别名的几种方式: 1.1. 使用typeAliases标签配置别名 使用typeAliases标签在MyBatis的配置文件(mybatis-config.xml)中定义别名。示…

    other 2023年6月28日
    00
  • jmeter设置全局变量与正则表达式提取器过程图解

    JMeter设置全局变量与正则表达式提取器过程图解攻略 JMeter是一款功能强大的性能测试工具,可以模拟多种负载情况对目标系统进行测试。在测试过程中,我们经常需要设置全局变量和使用正则表达式提取器来提取目标系统返回的数据。下面是详细的攻略,包含了设置全局变量和使用正则表达式提取器的过程图解。 设置全局变量 全局变量可以在整个测试计划中使用,方便在不同的线程…

    other 2023年7月29日
    00
  • activity网管

    activity网管 作为一名网站站长,我们经常需要管理着自己的网站,保持其稳定与安全。在这个过程中,“activity网管”是一个非常有用的工具,它可以帮助我们简化许多工作,并保证网站运行的顺畅。 什么是activity网管? “activity网管”是一款基于Python开发的免费开源软件,它可以帮助网站管理员自动化管理和监控网站。它提供了许多可以直接使…

    其他 2023年3月28日
    00
  • C语言中计算字符串长度与分割字符串的方法

    计算字符串长度 在C语言中,可以通过strlen()函数计算字符串的长度。strlen()函数是字符串操作函数之一,定义在头文件<string.h>中。 使用示例: #include <stdio.h> #include <string.h> int main() { char str[] = "hello, w…

    other 2023年6月20日
    00
  • 安装python3.7编译器后如何正确安装opnecv的方法详解

    安装python3.7编译器后,正确安装opencv分为以下几个步骤: 步骤1:安装opencv所需的依赖 打开终端(Linux或Mac电脑上)或命令提示符(Windows电脑上),并输入以下命令来安装opencv所需的依赖: Ubuntu: sudo apt-get install build-essential cmake git libgtk2.0-d…

    other 2023年6月26日
    00
合作推广
合作推广
分享本页
返回顶部