当前位置: 首页 > news >正文

C 语言 第八章 文件操作

目录

文件操作

文件和流的介绍

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()  函数返回零。此时,会清空缓冲区中的数据,关闭文件,并释放用于该文件的所有内存。


 

 


 

相关文章:

  • ElMessage
  • Redis 分布式锁实现原理与实战全解析
  • 腾讯云开发+MCP:旅游规划攻略
  • 修改idea/android studio等编辑器快捷注释从当前行开头的反人类行为
  • 车载以太网-TLS
  • 网络基础1
  • intructor库实现可迭代对象输出
  • LangChain高阶技巧:动态配置Runnable组件的原理剖析与实战应用
  • Spring AI高级RAG功能查询重写和查询翻译
  • 掌趣科技前端面试题及参考答案
  • 用AI改写生意底层逻辑 深圳天天送为线下万店赋能“数字飞轮”
  • 2025年常见渗透测试面试题- 常见中间件(题目+回答)
  • 山东大学软件学院项目实训-基于大模型的模拟面试系统-专栏管理部分
  • 代码随想录算法训练营Day27
  • vulkanscenegraph显示倾斜模型(5.9)-vsg中vulkan资源的编译
  • 多模态大语言模型arxiv论文略读(十三)
  • 【使用jenkins+docker自动化部署java项目】
  • MacOs下解决远程终端内容复制并到本地粘贴板
  • Web渗透之文件包含漏洞
  • 分层对象模型:PO、DTO、VO、BO定义区别与使用场景
  • 日本前卫艺术先驱群展上海:当具体派相遇古树古宅
  • 重庆市委原常委、政法委原书记陆克华被决定逮捕
  • 外交部:正确认识和对待历史是检验日本能否恪守和平发展承诺的重要标准
  • 云南威信麟凤镇通报“有人穿‘警察’字样雨衣参与丧事”:已立案查处
  • 李公明谈“全球南方”与美术馆
  • 媒体和打拐志愿者暗访长沙一地下代孕实验室,警方已控制涉案人员