C语言文件操作函数详解

目录

引言

一、文件操作函数分类概述

二、字符输入输出函数

         三、文本行输入输出函数

四、格式化输入输出函数

五、二进制输入输出函数

         六、总结


引言



 
在C语言编程中,文件操作是一项非常重要的技能。无论是处理配置文件、记录日志,还是存储和读取数据,都离不开文件操作。本文将详细介绍C语言中常用的文件操作函数,帮助大家更好地理解和运用这些函数。

 



一、文件操作函数分类概述


C语言提供了丰富的文件操作函数,根据功能可大致分为字符输入输出、文本行输入输出、格式化输入输出以及二进制输入输出函数,这些函数在不同的输入输出场景下发挥着作用。
 



二、字符输入输出函数



2.1 fgetc函数
 
 fgetc 函数用于从指定的输入流中读取一个字符。它适用于所有输入流,包括标准输入流 stdin 和文件输入流。函数原型为 int fgetc(FILE *stream) ,返回值为读取到的字符(以 int 类型表示),当读取到文件末尾或发生错误时,返回 EOF (-1)。



 ...c
#include <stdio.h>
int main() {
    FILE *fp = fopen("test.txt", "r");
    if (fp != NULL) {
        int ch = fgetc(fp);
        while (ch != EOF) {
            putchar(ch);
            ch = fgetc(fp);
        }
        fclose(fp);
    }
    return 0;
}
 ...



 
2.2 fputc函数
 
 fputc 函数用于向指定的输出流写入一个字符,适用于所有输出流。函数原型是 int fputc(int c, FILE *stream) ,返回值为写入的字符,如果写入失败则返回 EOF 。
 



...c
#include <stdio.h>
int main() {
    FILE *fp = fopen("test.txt", "w");
    if (fp != NULL) {
        fputc('H', fp);
        fputc('e', fp);
        fputc('l', fp);
        fputc('l', fp);
        fputc('o', fp);
        fclose(fp);
    }
    return 0;
}
 ...
 



三、文本行输入输出函数
 



3.1 fgets函数
 
 fgets 函数从输入流中读取一行字符,它会读取到换行符或者达到指定的字符数限制为止。原型为 char *fgets(char *str, int num, FILE *stream) ,返回值为指向读取到的字符串的指针,如果读取失败或到达文件末尾则返回 NULL 。
 



...c
  
#include <stdio.h>
int main() {
    FILE *fp = fopen("test.txt", "r");
    char buffer[100];
    if (fp != NULL) {
        while (fgets(buffer, sizeof(buffer), fp) != NULL) {
            printf("%s", buffer);
        }
        fclose(fp);
    }
    return 0;
}
 ...



3.2 fputs函数
 
 fputs 函数用于向输出流写入一个字符串,不包括字符串末尾的空字符 \0 。函数原型为 int fputs(const char *str, FILE *stream) ,成功时返回非负值,失败时返回 EOF 。
 



...c
  
#include <stdio.h>
int main() {
    FILE *fp = fopen("test.txt", "w");
    const char *str = "Hello, world!";
    if (fp != NULL) {
        fputs(str, fp);
        fclose(fp);
    }
    return 0;
}
 ...
 



四、格式化输入输出函数
 



4.1 fscanf函数
 
 fscanf 函数从输入流中按照指定的格式读取数据,适用于所有输入流。原型为 int fscanf(FILE *stream, const char *format, ...) ,返回值为成功匹配和赋值的输入项的个数。
 



...c
  
#include <stdio.h>
int main() {
    FILE *fp = fopen("data.txt", "r");
    int num;
    if (fp != NULL) {
        fscanf(fp, "%d", &num);
        printf("读取到的数字: %d\n", num);
        fclose(fp);
    }
    return 0;
}
 ...
 



4.2 fprintf函数
 
 fprintf 函数将数据按照指定格式输出到输出流中。函数原型是 int fprintf(FILE *stream, const char *format, ...) ,返回值为实际输出的字符数,若出错则返回负值。
 



...c
#include <stdio.h>
int main() {
    FILE *fp = fopen("data.txt", "w");
    int num = 100;
    if (fp != NULL) {
        fprintf(fp, "数字是: %d", num);
        fclose(fp);
    }
    return 0;
}
 ...
 



五、二进制输入输出函数
 



5.1 fread函数
 
 fread 函数用于从文件中读取二进制数据。原型为 size_t fread(void *ptr, size_t size, size_t count, FILE *stream) ,返回值为实际读取的完整项数。
 



...c
#include <stdio.h>
struct Data {
    int num;
    float fnum;
};
int main() {
    FILE *fp = fopen("data.bin", "rb");
    struct Data data;
    if (fp != NULL) {
        fread(&data, sizeof(struct Data), 1, fp);
        printf("读取到的整数: %d, 浮点数: %f\n", data.num, data.fnum);
        fclose(fp);
    }
    return 0;
}
 ...
 



5.2 fwrite函数
 
 fwrite 函数用于向文件中写入二进制数据。函数原型是 size_t fwrite(const void *ptr, size_t size, size_t count, FILE *stream) ,返回值为实际写入的完整项数。
 



...c
  
#include <stdio.h>
struct Data {
    int num;
    float fnum;
};
int main() {
    FILE *fp = fopen("data.bin", "wb");
    struct Data data = {10, 3.14};
    if (fp != NULL) {
        fwrite(&data, sizeof(struct Data), 1, fp);
        fclose(fp);
    }
    return 0;
}
 ...
 



六、总结



 
C语言的文件操作函数为我们提供了强大而灵活的文件处理能力。通过合理运用这些函数,我们可以轻松地实现各种文件相关的功能。在使用时,要注意文件的打开模式、函数的返回值以及错误处理,以确保程序的稳定性和正确性。希望本文能对大家在C语言文件操作方面有所帮助。
 

C语言文件操作函数大全 2.文件操作函数: (1)文件打开函数fopen fopen函数用来打开一个文件,其调用的一般形式为: 文件指针名=fopen("文件名","使用文件方式"); 其中,“文件指针名”必须是被说明为FILE 类型的指针变量,“文件名”是被打开文件的文件名。 “使用文件方式”是指文件的类型和操作要求。“文件名”是字符串常量或字符串数组。例如: FILE *fp; fp=fopen("file b","r"); 其意义是在当前目录下打开文件file b, 只允许进行“读”操作,并使fp指向该文件。 又如: FILE *fp fp=("c:\\file_a',"rb") 其意义是打开C驱动器磁盘的根目录下的文件file_a, 这是一个二进制文件,只允许按二进制方式进行读操作。两个反斜线“\\ ”中的第一个表示转义字符,第二个表示根目录。"\\"对于打开磁盘下的文件,要注意两个双斜线的正确应用,在表示绝对路径时,每一级目录都要用"\\", 例如:fp=fopen("d:\\study\\file_b","r+"); ####使用文件的方式共有12种,下面给出了它们的符号和意义。 文件使用方式 意 义 “rt” 只读打开一个文本文件,只允许读数据 “wt” 只写打开或建立一个文本文件,只允许写数据 “at” 追加打开一个文本文件,并在文件末尾写数据 “rb” 只读打开一个二进制文件,只允许读数据 “wb” 只写打开或建立一个二进制文件,只允许写数据 “ab” 追加打开一个二进制文件,并在文件末尾写数据 “rt+” 读写打开一个文本文件,允许读和写 “wt+” 读写打开或建立一个文本文件,允许读写 “at+” 读写打开一个文本文件,允许读,或在文件末追加数据 “rb+” 读写打开一个二进制文件,允许读和写 “wb+” 读写打开或建立一个二进制文件,允许读和写 “ab+” 读写打开一个二进制文件,允许读,或在文件末追加数据 对于文件使用方式有以下几点说明:
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值