首页 > 其他分享 >C语言专题之文件操作相关函数

C语言专题之文件操作相关函数

时间:2024-12-02 12:34:00浏览次数:11  
标签:文件 专题 读取 stream 写入 C语言 FILE 指针 函数

在C语言中,文件操作是一系列重要且功能强大的功能,主要通过标准库<stdio.h>中的函数实现。以下是一些核心的文件操作函数及其详细说明:

一、 文件的打开与创建:fopen()

  1.原型:FILE *fopen(const char *filename, const char *mode);

  2.描述:fopen函数用于打开一个已经存在的文件或者创建一个新文件,根据指定的模式进行操作。

  3.参数:

      1.filename:要打开的文件名。

      2.mode:指定文件的操作模式,常见的模式有:

          1."r":只读方式打开;文件必须存在。

          2."w":写入方式打开;若文件存在则清空重新写入,若不存在则创建新文件。

          3."a":追加方式打开;若文件不存在则创建。

          4."r+":读写方式打开;文件必须存在。

          5."w+":读写方式打开;若文件存在则清空重新写入,若不存在则创建新文件。

          6."a+":读写方式打开,从文件末尾开始追加;若文件不存在则创建。

  4.返回值:如果成功,返回指向FILE结构体的指针;如果失败,返回NULL。

示例:23a47deca2cd4f4ab1e470977e6caaac.jpg

二、 写入文件:fwrite(), fprintf(), fputc(), fputs()

  1.fwrite():二进制写入,适合任何类型的数据。

1)函数原型:size_t fwrite(const void *ptr, size_t size, size_t nmemb, FILE *stream);

2)描述: 向文件写入指定数量的字节。

3)ptr: 要写入的数据的指针。

4)size: 每个元素的大小。

5)nmemb: 元素的数量。

6)stream: 目标文件流。

7)返回值: 成功写入的元素数量;出错或磁盘满返回0

  2.fprintf():格式化写入,通常用于文本数据。

1)函数原型:int fprintf(FILE *stream, const char *format, ...);

2)描述: 根据格式化字符串向文件写入数据。

3)参数:stream: 文件流指针。format: 格式化字符串。

4)...: 可变参数列表,对应格式化字符串中的占位符。

5)返回值: 成功则写入的字符数;出错则返回负数。

  3.fputc():写入单个字符。

1)函数原型:int fputc(int c, FILE *stream);

2)描述: 向文件写入一个字符。

3)参数:c: 要写入的字符。stream: 文件流指针。

4)返回值: 写入的字符;出错返回EOF(通常为-1)。

 4.fputs():写入字符串。

1)函数原型:int fputs(const char *s, FILE *stream);

2)描述: 向文件写入一个字符串。

3)参数:s: 字符串指针。stream: 文件流指针。

4)返回值: 成功写入则返回非负值;出错返回EOF。

示例:

ee118d24e26246b383db5052fbcf5f37.jpg

三、 读取文件:fread(), fgets(), fscanf(), fgetc()

  1.fread():二进制读取,适合读取任何类型的数据。

1)函数原型:size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream);

2)描述: 从文件读取数据。

3)参数:ptr: 存储读取数据的指针。

size: 每个元素的大小。

nmemb: 要读取的元素数量。

stream: 文件流指针。

4)返回值: 实际读取的元素数量;读取失败或文件结束返回0。

  2.fgets():安全地读取一行文本。

1)函数原型:char *fgets(char *s, int n, FILE *stream);

2)描述: 从文件读取至多n-1个字符(含终止符)到字符串s。

3)参数:s: 目标字符串。n: 最大读取字符数。stream: 文件流指针。

4)返回值: 成功读取的字符串指针;读取失败或文件结束返回NULL

  3.fscanf():格式化读取,适合读取文本数据。

1)函数原型:int fscanf(FILE *stream, const char *format, ...);

2)描述: 根据格式化字符串从文件读取数据。

3)参数:stream: 文件流指针。format: 格式化字符串。...: 变长参数列表,用于存储读取的数据。

4)返回值: 成功匹配和赋值的项目数;没有匹配或读取错误返回EOF

  4.fgetc():读取单个字符。

1)函数原型int fgetc(FILE *stream);

2)描述: 从文件读取单个字符。参数:stream: 文件流指针。

3)返回值: 读取的字符;读取失败或文件结束返回EOF。

示例:

fdadde7c784a4175940472cfda1fc668.jpg

四、 文件指针操作:fseek(), rewind(), ftell()

  1.fseek():设置文件位置指针。

1)函数原型:int fseek(FILE *stream, long offset, int whence);

2)描述: 设置文件位置指示器。

3)参数:stream: 文件流指针。

4)offset: 相对于whence指定的位置偏移量。

5)whence: 基准位置,可以是SEEK_SET(从文件头)、SEEK_CUR(当前位置)、SEEK_END(文件尾)。

6)返回值: 成功则返回0;失败返回非零值。

  2.rewind():将文件位置指针重置到文件起始位置

1)函数原型:void rewind(FILE *stream);

2)描述: 将文件位置指示器重置到文件开头。

3)参数:stream: 文件流指针。

4)返回值: 无。

  3.ftell():获取当前文件位置指针的位置。

1)函数原型:long ftell(const FILE *stream);

2)描述: 获取文件位置指示器的当前位置。

3)参数:stream: 文件流指针。

4)返回值: 当前文件位置;出错或到达文件末尾返回-1L。

示例:

9a3bbad12ba940408f9199bed84a5150.jpg

五、文件关闭:fclose()

  1.原型:int fclose(FILE *stream);

  2.描述:关闭由stream指定的文件。

  3.返回值:成功返回0,出错返回EOF

六、完整示例

041ff4cb3db849f7965abd23be9c3cd0.jpg

 

以上则是有关文件操作的基本函数,但实际应用中可能还需要考虑更多的细节,例如错误处理、二进制文件操作等。掌握这些函数能让你更加灵活和高效地处理文件读写任务。如有错误,希望指出!

点个关注,防止迷路,欢迎大家共同学习交流 !

 

标签:文件,专题,读取,stream,写入,C语言,FILE,指针,函数
From: https://blog.csdn.net/2401_89278589/article/details/144176585

相关文章

  • C#构造函数实例
    //构造函数用来初始化类的成员属性//不包含返回类型//当创建实例对象时自动调用,可以对实例对象初始化//静态类只能出现静态成员不能有实例成员//静态类不可以被继承//静态成员类名调用//非静态对象名调用//静态函数只能访问静态成员//非静态函数可以访问所有成员//静......
  • C语言qosrt排序问题
    在MDK中使用qsort排序时发现会卡死:#include<stdio.h>#include<stdlib.h>inttestdata[200]={0,6,3};inttestcnt;intcompare(constvoid*a,constvoid*b){testcnt++;if(*(int*)a<*(int*)b)return-1;elseif(*(int*)a>*(int......
  • YOLOv8改进 | 损失函数篇:SlideLoss与FocalLoss的细节优化与应用【YOLOv8】
    本专栏专为AI视觉领域的爱好者和从业者打造。涵盖分类、检测、分割、追踪等多项技术,带你从入门到精通!后续更有实战项目,助你轻松应对面试挑战!立即订阅,开启你的YOLOv8之旅!专栏订阅地址:https://blog.csdn.net/mrdeam/category_12804295.html文章目录YOLOv8改进|损失函数......
  • python - 修饰函数
    Python装饰器(Decorator),名字叫装饰器,功能自然对应于设计模式中的装饰者模式(代理模式)。写法上,很像java中的函数注解,实际上,功能也大致一样。简单说:就是在调用函数的时候,可以在在调用之前,加一点逻辑,调用完加一些逻辑,出现异常时加一些逻辑。用途很多:入参的校验,异常处理,返回值......
  • python - 函数
    标准写法定义一个函数,函数名叫summary(),函数有两个参数:a和b,a的默认值为1,b的默认值为2;:int指定参数为int类型(注解);->int指定返回值为int(注解);r""""""是标准的函数注释;要是空函数,还没想好功能,用pass进行占位defsummary(a:int=1,b:int=2)->int:......
  • 浙大翁凯C语言网课笔记自整理——C语言入门必看(持更)
    第一个视频:C语言简史为了玩小游戏SpaceTravel,需要在电脑上使用小型的操作系统。而当时只有大型机GE-645,以及对应的Multics系统。于是肯·汤普森和丹尼斯·里奇写出了,Unix操作系统。记忆:M→多复杂      U→小相对简单 1.1.1计算机与编程语言计算机是怎......
  • C语言中 switch-case`语句的优劣分析:全面深入探讨
    在C语言中,switch-case语句是一种常用的多分支选择结构,它允许根据一个变量的不同值执行不同的代码块。与传统的if-else语句相比,switch-case语句在某些场景下具有明显的优势,但也存在一些不足之处。本文将全面深入地探讨switch-case语句的优点和缺点,并通过具体示例进行......
  • 【C语言】【勾股定理】求满足 a+b+c=n 并且是美丽三元组(a^2 + b^2 = c^2)的数量。
    题目:        我们定义一个由三个自然数a,b,c(a<b<c)组成,并满足a^2+b^2=c^2的三元组为美丽三元组,例如3^2+4^2=5^2。        现给定一个正整数n,求满足a+b+c=n并且是美丽三元组的数量,若不存在这样的三元组则输出NoJoyfine,如果答案唯一则输出这个三......
  • 洛谷 P3395 路障 C语言 bfs(想复杂的思路)
    题目:https://www.luogu.com.cn/problem/P3395题目描述B君站在一个n×n 的棋盘上。最开始,B君站在(1,1) 这个点,他要走到(n,n) 这个点。B君每秒可以向上下左右的某个方向移动一格,但是很不妙,C君打算阻止B君的计划。每秒结束的时刻,C君会在 (x,y)上摆一个路障。B......
  • [Python学习笔记4]——函数
    目录 1.函数的定义2.传递实参2.1位置实参2.2关键字实参2.3给形参指定默认值3.返回值3.1返回简单值3.2将形参的默认值指定为空字符串以实现实参可选3.3返回字典或列表4.传递列表4.1向函数传递列表4.2在函数中修改列表4.3禁止函数修改列表(使用列表切......