C语言文件操作与相关函数介绍

yizhihongxing

C语言文件操作与相关函数介绍

什么是文件操作

在计算机中,文件是信息的集合,它通常存储在辅助存储设备上(例如磁盘、光盘等),以便长期保存和访问。文件操作是指对文件在内存和外存之间进行读取、写入、打开、关闭等操作的过程。

C语言中的文件操作

C语言提供了一组标准函数,用于对文件进行操作。这些函数包括:

  • fopen(): 打开一个文件
  • fclose(): 关闭一个文件
  • feof(): 检查文件是否已经到达文件末尾
  • fgetc(): 从文件中读取一个字符
  • fputc(): 向文件中写入一个字符
  • fgets(): 从文件中读取一行字符串
  • fputs(): 向文件中写入一行字符串
  • fprintf(): 格式化输出到文件
  • fscanf(): 从文件读取格式化输入

下面,我们将分别对以上函数进行详细介绍,并给出示例。

fopen()

fopen函数用于打开一个文件,并返回一个表示该文件的文件指针。

FILE *fopen(const char *filename, const char *mode);

函数参数说明:

  • filename:表示要打开的文件名
  • mode:表示文件的打开方式,包括以下几种:
  • r:以只读方式打开文件,文件必须存在
  • w:以只写方式打开文件,如果文件存在则清空文件内容,如果不存在则创建文件
  • a:以追加方式打开文件,如果文件存在则指针移到文件末尾,如果不存在则创建文件
  • r+:以读写方式打开文件,文件必须存在
  • w+:以读写方式打开文件,如果文件存在则清空文件内容,如果不存在则创建文件
  • a+:以读写方式打开文件,如果文件存在则指针移到文件末尾,如果不存在则创建文件

示例:

#include <stdio.h>

int main()
{
    FILE *fp;

    fp = fopen("test.txt", "w");
    fprintf(fp, "Hello, World!");
    fclose(fp);
    return 0;
}

这个示例程序打开了文件test.txt,并向其中写入了一行字符串"Hello, World!",然后关闭文件。

fclose()

fclose函数用于关闭一个已经打开的文件。

int fclose(FILE *stream);

函数参数说明:

  • stream:表示要关闭的文件指针

示例:

#include <stdio.h>

int main()
{
    FILE *fp;

    fp = fopen("test.txt", "w");
    fprintf(fp, "Hello, World!");
    fclose(fp);
    return 0;
}

这个示例程序打开了文件test.txt,并向其中写入了一行字符串"Hello, World!",然后关闭文件。注意,在使用完文件后,务必关闭文件,以释放系统资源。

feof()

feof函数用于判断一个文件是否已经到达文件末尾。

#include <stdio.h>

int main()
{
    FILE *fp;
    int c;

    fp = fopen("test.txt", "r");
    while ((c = fgetc(fp)) != EOF)
    {
        putchar(c);
    }
    if (feof(fp))
    {
        puts("已到文件末尾");
    }
    else
    {
        puts("未到文件末尾");
    }
    fclose(fp);
    return 0;
}

这个示例程序打开了文件test.txt,读取其中的每一个字符,并在读取结束后判断文件是否已经到达文件末尾。注意,EOF常量表示文件末尾。

fgetc()

fgetc函数用于从文件中读取一个字符。

int fgetc(FILE *stream);

函数参数说明:

  • stream:表示要读取的文件指针

示例:

#include <stdio.h>

int main()
{
    FILE *fp;
    int c;

    fp = fopen("test.txt", "r");
    c = fgetc(fp);
    while (c != EOF)
    {
        putchar(c);
        c = fgetc(fp);
    }
    fclose(fp);
    return 0;
}

这个示例程序打开了文件test.txt,读取其中的每一个字符,并输出到屏幕上。

fputc()

fputc函数用于向文件中写入一个字符。

int fputc(int c, FILE *stream);

函数参数说明:

  • c:表示要写入的字符
  • stream:表示要写入的文件指针

示例:

#include <stdio.h>

int main()
{
    FILE *fp;
    int c;

    fp = fopen("test.txt", "w");
    fputc('H', fp);
    fputc('e', fp);
    fputc('l', fp);
    fputc('l', fp);
    fputc('o', fp);
    fputc(',', fp);
    fputc(' ', fp);
    fputc('W', fp);
    fputc('o', fp);
    fputc('r', fp);
    fputc('l', fp);
    fputc('d', fp);
    fputc('!', fp);
    fclose(fp);
    return 0;
}

这个示例程序创建了一个文件test.txt,并向其中写入一行字符串"Hello, World!"。

fgets()

fgets函数用于从文件中读取一行字符串。

char *fgets(char *str, int n, FILE *stream);

函数参数说明:

  • str:表示用于存储读取结果的字符串指针
  • n:表示最大读取的字符数,包括结尾的'\0'
  • stream:表示要读取的文件指针

示例:

#include <stdio.h>

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

    fp = fopen("test.txt", "r");
    while (fgets(str, 50, fp) != NULL)
    {
        printf("%s", str);
    }
    fclose(fp);
    return 0;
}

这个示例程序打开了文件test.txt,读取其中的每一行字符串,并输出到屏幕上。

fputs()

fputs函数用于向文件中写入一行字符串。

int fputs(const char *str, FILE *stream);

函数参数说明:

  • str:表示要写入的字符串
  • stream:表示要写入的文件指针

示例:

#include <stdio.h>

int main()
{
    FILE *fp;

    fp = fopen("test.txt", "w");
    fputs("Hello, World!\n", fp);
    fputs("Hello, C Language!\n", fp);
    fclose(fp);
    return 0;
}

这个示例程序创建了一个文件test.txt,并向其中写入两行字符串。

fprintf()

fprintf函数用于格式化输出到文件。

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

函数参数说明:

  • stream:表示要写入的文件指针
  • format:表示要写入的格式化字符串,和printf函数中的字符串相同
  • ...:表示格式化字符串中的格式化参数,和printf函数相同

示例:

#include <stdio.h>

int main()
{
    FILE *fp;

    fp = fopen("test.txt", "w");
    fprintf(fp, "%d %s\n", 100, "Hello, World!");
    fclose(fp);
    return 0;
}

这个示例程序创建了一个文件test.txt,并向其中写入一行格式化字符串"100 Hello, World!"。

fscanf()

fscanf函数用于从文件读取格式化输入。

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

函数参数说明:

  • stream:表示要读取的文件指针
  • format:表示要读取的格式化字符串,和printf函数中的字符串相同
  • ...:表示格式化字符串中的格式化参数,和scanf函数相同

示例:

#include <stdio.h>

int main()
{
    FILE *fp;
    int num;
    char str[20];

    fp = fopen("test.txt", "r");
    fscanf(fp, "%d %s", &num, str);
    printf("%d %s\n", num, str);
    fclose(fp);
    return 0;
}

这个示例程序打开了文件test.txt,读取其中的一行格式化字符串"100 Hello, World!",并将其分别读取为整数和字符串,输出到屏幕上。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C语言文件操作与相关函数介绍 - Python技术站

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

相关文章

  • springboot+mybatis配置clickhouse实现插入查询功能

    以下是关于Spring Boot + MyBatis配置ClickHouse实现插入查询功能的完整攻略,包含两个示例说明: 1. 添加ClickHouse依赖 在项目的pom.xml文件中添加ClickHouse的依赖: <dependency> <groupId>ru.yandex.clickhouse</groupId&gt…

    other 2023年10月19日
    00
  • Linux命令行删除文件实操方法

    下面是针对“Linux命令行删除文件实操方法”的完整攻略。 一、前言 在日常使用 Linux 命令行的过程中,我们可能需要删除一些文件以释放磁盘空间。本篇指南将详细介绍 Linux 命令行删除文件的实操方法,以及需要注意的事项。 二、删除单个文件 如果要删除单个文件,我们可以使用 rm 命令。例如,要删除文件 /home/user/file1,可以执行以下命…

    other 2023年6月26日
    00
  • explorer.exe是什么进程? explorer.exe应用程序错误

    关于explorer.exe是什么进程以及explorer.exe应用程序错误,我将分几个部分展开解释,并提供两个示例说明。 Explorer.exe是什么进程 Explorer.exe是windows操作系统中的一个很重要的进程,它被称为“ Windows资源管理器”,主要用于管理桌面、任务栏和文件资源管理器等窗口,是windows桌面界面的一部分。 当你…

    other 2023年6月25日
    00
  • Linux基础学习之文件查找find的常见用法

    Linux基础学习之文件查找find的常见用法 在Linux系统中,文件查找是一项非常基础的技能,也是每个初学者必须掌握的技能之一。Linux系统提供了很多工具来搜索和查找文件,其中最著名的一个是”find”命令。本篇文章将为您介绍“find”命令的常见用法以及相应的实例说明。 命令语法 find [path…] [expression] 命令中的”pa…

    other 2023年6月26日
    00
  • vue 路由嵌套高亮问题的解决方法

    Vue 路由嵌套高亮问题的解决方法攻略 在 Vue 中,当使用路由嵌套时,我们可能会遇到一个常见的问题:如何在嵌套路由中正确地高亮当前活动的链接。本攻略将详细介绍解决这个问题的方法,并提供两个示例说明。 方法一:使用动态类绑定 Vue 提供了一种简单的方法来解决路由嵌套高亮问题,即使用动态类绑定。我们可以通过在路由链接上绑定一个动态类,根据当前路由的路径来判…

    other 2023年7月28日
    00
  • 利用Python获取文件夹下所有文件实例代码

    下面是获取文件夹下所有文件的完整攻略以及两条示例说明: 1. 使用os模块遍历文件夹 Python的os模块提供了一种遍历文件夹的方法,可以获取文件夹下所有文件的信息。下面是示例代码: import os def get_all_files(path): file_list = [] for root, dirs, files in os.walk(path…

    other 2023年6月26日
    00
  • 全球海外/国外ip代理(http/https/socks5c)

    全球海外/国外IP代理攻略 全球海外/国外IP代理是一种网络代理服务,可以让用户在访问互联网使用代理服务器的IP地址,从而隐藏用户的真实IP地址,保护用户的隐私和安全。本文将介绍全球海外国外IP代理的基本概念、知名提供商、使用方法和一些常见问题。 基本概念 简单来说,全球海外IP代理是一种网络代理服务,可以让用户在访问互联网时使用代理服务器的IP地址,从而隐…

    other 2023年5月7日
    00
  • C++中析构函数为何是虚函数

    为什么析构函数必须是虚函数? 在C++中,当一个对象被删除时,其析构函数会被调用。如果该对象是一个多态类的对象,如果析构函数不是虚函数,那么只会调用基类的析构函数,而不会调用派生类的析构函数,导致派生类中的资源无法被正常释放,从而导致内存泄漏等问题。因此,为了能够使派生类中的资源得到正常释放,C++中析构函数必须是虚函数。 示例代码: class Base …

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