关于C语言中的文件操作(超全整理~,助力你的期末考!)

今天给大家分享文件操作的知识~
在这里插入图片描述

文件打开和关闭

fopen(): 用于打开文件,并返回一个指向该文件的文件指针。语法:

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

fclose(): 用于关闭文件。语法:int fclose(FILE *stream);

文件读取和写入

读取文件

  1. fgetc(): 逐字符读取文件。语法:
  int fgetc(FILE *stream);
  1. fgets(): 逐行读取文件。语法:
char *fgets(char *str, int n, FILE *stream);
  1. fread(): 以二进制形式读取文件。语法:
size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream);

写入文件

  1. fputc(): 写入一个字符到文件。语法:
int fputc(int c, FILE *stream);
  1. fputs(): 写入一个字符串到文件。语法:
int fputs(const char *str, FILE *stream);
  1. fwrite(): 以二进制形式写入文件。语法:
size_t fwrite(const void *ptr, size_t size, size_t nmemb, FILE *stream);

文件定位

  1. fseek(): 设置文件指针的位置。语法:
int fseek(FILE *stream, long int offset, int whence);
  1. ftell(): 获取文件指针的当前位置。语法:
long int ftell(FILE *stream);
  1. rewind(): 将文件指针重新设置到文件开头。语法:
void rewind(FILE *stream);

文件状态

  1. feof(): 检查文件是否已到达文件末尾。语法:
int feof(FILE *stream);
  1. ferror(): 检查文件是否有错误发生。语法:
int ferror(FILE *stream);
  1. clearerr(): 清除文件错误标志。语法:
void clearerr(FILE *stream);

文件操作辅助函数

  1. remove(): 删除文件。语法:
int remove(const char *filename);
  1. rename(): 重命名文件。语法:
int rename(const char *old_filename, const char *new_filename);
  1. tmpfile(): 创建临时文件。语法:
FILE *tmpfile(void);
  1. tmpnam(): 创建唯一的临时文件名。语法:
char *tmpnam(char *str);

文件打开模式

文件在C语言中可以以不同的方式打开和使用,这些方式由文件打开模式(File Open Modes)来定义。这些模式决定了程序对文件的访问权限和行为。以下是常见的文件打开模式:

  1. 只读模式
    “r”:只读模式。文件必须存在。允许读取文件内容,但不允许对文件进行写操作。如果文件不存在,打开文件会失败。
  2. 只写模式
    “w”:只写模式。文件不存在则创建新文件,如果文件已存在,则会清空文件内容。允许写入文件内容,但不允许读取文件。如果文件打开成功,则指针位于文件开头。
  3. 追加模式
    “a”:追加模式。文件不存在则创建新文件,文件指针位于文件末尾。允许在文件末尾追加写入内容,不允许读取或修改文件中已有的内容。
  4. 读写模式
    “r+”:读写模式。文件必须存在。允许读取和写入文件内容。指针位于文件开头。如果文件不存在,打开文件会失败。
    “w+”:读写模式。文件不存在则创建新文件,如果文件已存在,则会清空文件内容。允许读取和写入文件内容。如果文件打开成功,则指针位于文件开头。
    “a+”:读写模式。文件不存在则创建新文件,文件指针位于文件末尾。允许读取和在文件末尾追加写入内容。可以读取文件中已有的内容。
  5. 二进制模式
    在上述模式后添加**“b”**表示二进制模式。例如,“rb”、“wb”、“ab”、“r+b”、“w+b”、“a+b”。二进制模式用于处理二进制文件,如图像、音频等。

文件操作实例:
实现以下功能 :将一个文件的内容复制到另一个文件中(如果该文件不存在则新建一个文件)

#include <stdio.h>

int main() {
    FILE *sourceFile, *destinationFile;
    char sourceFileName[100], destinationFileName[100];
    char ch;

    printf("请输入要复制的文件名:");
    scanf("%s", sourceFileName);

    // 打开源文件
    sourceFile = fopen(sourceFileName, "r");
    if (sourceFile == NULL) {
        printf("无法打开文件或文件不存在。\n");
        return 1;
    }

    printf("请输入目标文件名:");
    scanf("%s", destinationFileName);

    // 创建或打开目标文件
    destinationFile = fopen(destinationFileName, "w");
    if (destinationFile == NULL) {
        printf("无法创建或打开目标文件。\n");
        fclose(sourceFile);
        return 1;
    }

    // 复制源文件内容到目标文件
    while ((ch = fgetc(sourceFile)) != EOF) {
        fputc(ch, destinationFile);
    }

    printf("文件内容复制成功!\n");

    // 关闭文件
    fclose(sourceFile);
    fclose(destinationFile);

    return 0;
}

  • 31
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

LuckyInn

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值