C语言-读写操作

简介: C语言-读写操作

读写操作

在C语言中,文件的读写操作是如何进行的?

在 C 语言中,可以使用标准库中的文件 I/O 函数来进行文件的读写操作。以下是一些基本的文件读写操作示例:

 

1. 打开文件

 

使用  fopen()  函数打开文件,并获取一个文件指针。如果打开成功,该函数返回一个  FILE  指针,否则返回  NULL 。

image.png

其中, example.txt  是要打开的文件名, r  表示以只读模式打开文件。

2. 读取文件

使用  fgets()  函数从文件中读取字符串。下面是一个示例:

image.png

上述代码将从文件中读取每一行,并打印到控制台。 fgets()  函数会自动在每行末尾添加一个换行符。

3. 写入文件

 

使用  fprintf()  函数将数据写入文件。下面是一个示例:

image.png

 

 

上述代码将字符串 "Hello, world!" 写入文件。

4. 关闭文件

 

使用  fclose()  函数关闭文件,释放相关资源。下面是一个示例:

image.png

上述代码将关闭文件。如果关闭文件时发生错误,会打印错误信息并返回非零值。

 

除了上述基本的文件读写操作,C 语言还提供了其他更高级的文件操作功能,例如:以字符形式读写文件、以字符串的形式读写文件、以数据块的形式读写文件等。

如何判断文件的读取是否已经结束?

在 C 语言中,可以使用 feof 函数来检测当前文件流上的文件结束标识,判断是否读到了文件结尾。其原型为:

image.png

 

【参数】stream 为文件流指针。

【返回值】检测到文件结束标识返回1,否则返回0。

 

文件结束标识一般由上次的读写操作来设置,当然也可以手动设置。当文件内部的位置指针指向文件结束时,并不会立即设置 FILE 结构中的文件结束标识,只有再执行一次读文件操作,才会设置结束标志,此后调用 feof 才会返回为真。文件结束标识可以由 clearerr、rewind、fseek、fsetpos 和 freopen 函数清除;如果这时位置指针未被重置,那么将在下次 I/O 操作时进行设置。

 

注意,feof 与 EOF 不同:feof 是函数,用来检测文件的结束;EOF 是 End Of File 的缩写,是 C 语言中标准库中定义的宏,定义为:#define EOF (-1)。EOF 的值为-1,是 int 类型数据,在32位系统中,可以表示为0xFFFFFFFF;EOF 不但能表示读文件到了结尾这一状态,它还能表示 I/O 操作中的读、写错误(可以用 ferror 来检测)以及其它一些关联操作的错误状态。

 

 

目录
相关文章
C4.
|
7月前
|
存储 程序员 数据库
C语言顺序读写数据文件
C语言顺序读写数据文件
C4.
75 0
|
存储 Linux C语言
24 C语言 - 文件读写
24 C语言 - 文件读写
62 0
|
C语言 内存技术
C语言—指针读写
主要介绍了如何利用指针实现读写操作。
117 0
|
6月前
|
存储 C语言
C语言文件读写详解
C语言文件读写详解
|
6月前
|
C语言 Windows
【C语言】:文件读写相关函数介绍
【C语言】:文件读写相关函数介绍
41 0
|
6月前
|
Linux API C语言
C语言读写BMP文件-EasyBmp【 linux 平台】
**EasyBmp** 是一个49KB的轻量级C++图像处理库,专注于BMP格式,提供简单易用的API。它的特点是小巧、开源、易于理解和高度定制。通过示例代码展示了如何轻松读取、缩放和保存BMP图像。适合需要高效处理BMP图像的开发者。
|
6月前
|
C语言
C语言进阶——sprintf与sscanf、文件的随机读写(fseek、ftell、rewind)
C语言进阶——sprintf与sscanf、文件的随机读写(fseek、ftell、rewind)
47 0
|
6月前
|
C语言
C语言进阶——文件的读写(文件使用方式、文件的顺序读写、常用函数、fprintf、fscanf)
C语言进阶——文件的读写(文件使用方式、文件的顺序读写、常用函数、fprintf、fscanf)
43 0
|
7月前
|
存储 C语言 C++
C语言进阶⑲(文件下篇)(文件读写+文本文件和二进制文件+EOF+文件缓冲区)(下)
C语言进阶⑲(文件下篇)(文件读写+文本文件和二进制文件+EOF+文件缓冲区)
77 0
|
7月前
|
存储 C语言 C++
C语言进阶⑲(文件下篇)(文件读写+文本文件和二进制文件+EOF+文件缓冲区)(上)
C语言进阶⑲(文件下篇)(文件读写+文本文件和二进制文件+EOF+文件缓冲区)
60 0