C 语言 第八章 文件操作

发布于:2025-04-14 ⋅ 阅读:(23) ⋅ 点赞:(0)

目录

文件操作

文件和流的介绍

C 输入 & 输出

C 文件的读写

创建/打开文件

写入文件

 fputc 函数

 fputs 函数

fprintf 函数

实例:

 读取文件

fgets函数

实例:

关闭文件


文件操作


文件和流的介绍


变量、数组、结构体等数据在运行时存储于内存中,程序结束后内存数据会被释放。若需长久保存数据,可写入文件或数据库。

文件是数据源的一种(如 word 文档、txt 文件、excel 文件、avi 文件等),作用是保存数据(如图像、视频、声音等)。

在 C 程序中,文件数据的输入/输出以“流(stream)”方式进行:
 

  • 输入流:数据从数据源(如文件)流向程序(或内存)。
  • 输出流:数据从程序(或内存)流向数据源(如文件)。


C 输入 & 输出


  •   输入:向程序(或内存)写入数据,数据可来自键盘、文件或网络。C 语言通过内置函数读取输入并写入程序。

  •  输出:在屏幕、打印机或文件中显示(或保存)数据。C 语言通过内置函数将数据输出到指定载体。

     注: scanf() 和 printf() 函数:C 语言 I/O(输入/输出)常用这两个函数。
 

  •  int scanf(const char *format,...) :从标准输入流  stdin  读取输入,按  format  解析输入。
  •  int printf(const char *format,...) :将输出写入标准输出流  stdout ,按格式产生输出。

 
实例:

  
#include <stdio.h>  
int main( ) {  
    int i;  
    printf( "Enter a value :\n"); // 标准输出函数  
    scanf("%d", &i); // 标准输入函数  
    printf( "You entered: %d \n", i);  
    return 0;  
}  

C 文件的读写

 
文件(无论是文本文件还是二进制文件)都代表一系列字节。C 语言既提供顶层访问函数,也提供底层调用处理存储设备上的文件。

创建/打开文件


使用 fopen() 函数创建或打开文件,初始化 FILE 类型对象(包含控制流的必要信息)。
函数原型:

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

说明: filename 是字符串,用来命名文件,mode 访问模式:

模式 描述
 r  只读,打开已有文本文件。
只写,文件不存在则创建,存在则截断(清空原有内容)后写入。
 a 追加写,文件不存在则创建,存在则从文件末尾写入。

写入文件


C标准库提供按字符或固定长度字符串形式读/写文件的函数。
 

 fputc 函数

函数原型:

 int fputc(int c, FILE* fp); 

说明:将参数 c 的字符值写入 fp 指向的输出流,成功返回写入的字符。
 

 fputs 函数

函数原型:

int fputs(const char* s, FILE* fp); 

说明:将字符串 s 写入 fp 指向的输出流,成功返回非负值,出错返回 EOF 。
 

fprintf 函数


函数原型: 

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

功能:与 fputs() 类似,将字符串写入文件。


实例:
#include <stdio.h>  
int main() {  
    //创建一个文件指针  
    FILE *fp = NULL;  
    //打开该文件  
    fp = fopen("D:/demo.txt", "w");  
    //将内容写入到文件中  
    fputs("你好,北京!\n", fp);  
    fprintf(fp, "你好,世界!\n");  
    //关闭文件(确保内容保存)  
    fclose(fp);  
    printf("创建,写入信息完成");  
}  
 
 

 读取文件


fgets函数

函数原型:

 char* fgets(char *buf, int n, FILE *fp); 

说明:此函数按行读取数据,从文件中读取一行数据(包括换行符‘\n’),并将内容存储到指定缓冲区 buf 。 n 是缓冲区大小, fp 是文件指针。成功读取返回 buf (字符串首地址),到达文件末尾或读取失败返回 NULL 。

实例:
#include <stdio.h>  
int main() {  
    //创建一个文件指针  
    FILE* fp = NULL;  
    //定义一个缓冲区  
    char buff[1024];  
    //打开文件  
    fp = fopen("D:/demo.txt", "r");  
    //循环读取fp指向的文件内容,读到NULL时结束  
    while (fgets(buff, 1024, fp) != NULL) {  
        printf("%s", buff);  
    }  
}

关闭文件


使用完文件后(读,写),一定要将该文件关闭。
关闭文件,使用  fclose()  函数。
函数原型:

 int fclose( FILE* fp ); 

 如果成功关闭文件, fclose()  函数返回零。此时,会清空缓冲区中的数据,关闭文件,并释放用于该文件的所有内存。


 

 


 


网站公告

今日签到

点亮在社区的每一天
去签到