C语言的文件读写函数
目录
打开文件
关闭文件
写入文件
读取文件
二进制 I/O 函数
打开文件
fopen( ) 函数来创建一个新的文件或者打开一个已有的文件,这个调用会初始化类型 FILE 的一个对象,类型 FILE 包含了所有用来控制流的必要的信息。下面是这个函数调用的原型:
FILE *fopen( const char * filename, const char * mode );
其中,filename 是文件名,访问模式 mode 值可以是下列值中的一个:
模式 | 描述 |
---|---|
r | 打开一个已有的文本文件,允许读取文件。 |
w | 打开一个文本文件,允许写入文件。如果文件不存在,则会创建一个新文件。在这里,您的程序会从文件的开头写入内容。如果文件存在,则该会被截断为零长度,重新写入。 |
a | 打开一个文本文件,以追加模式写入文件。如果文件不存在,则会创建一个新文件。在这里,您的程序会在已有的文件内容中追加内容。 |
r+ | 打开一个文本文件,允许读写文件。 |
w+ | 打开一个文本文件,允许读写文件。如果文件已存在,则文件会被截断为零长度,如果文件不存在,则会创建一个新文件。 |
a+ | 打开一个文本文件,允许读写文件。如果文件不存在,则会创建一个新文件。读取会从文件的开头开始,写入则只能是追加模式。 |
如果处理的是二进制文件,则需使用下面的访问模式来取代上面的访问模式:
"rb", "wb", "ab", "rb+", "r+b", "wb+", "w+b", "ab+", "a+b"
关闭文件
fclose( ) 函数。
int fclose( FILE *fp );
如果成功关闭文件,函数返回零,如果关闭文件时发生错误,函数返回 EOF。这个函数实际上,会清空缓冲区中的数据,关闭文件,并释放用于该文件的所有内存。EOF 是一个定义在头文件 stdio.h 中的常量。
写入文件
fputc() 函数。
int fputc( int c, FILE *fp );
把参数 c 的字符值写入到 fp 所指向的输出流中。如果写入成功,返回写入的字符,如果发生错误,则会返回 EOF。
int fputs( const char *s, FILE *fp );
把字符串 s 写入到 fp 所指向的输出流中。如果写入成功,返回一个非负值,如果发生错误,则会返回 EOF。也可以使用 int fprintf(FILE *fp,const char *format, ...) 函数把一个字符串写入到文件中。
#include <stdio.h>int main()
{FILE *fp = NULL;fp = fopen("/tmp/test.txt", "w+");fprintf(fp, "This is testing for fprintf...\n");fputs("This is testing for fputs...\n", fp);fclose(fp);
}
注意:确保有可用的 tmp 目录,如果不存在该目录,则需要在计算机上先创建该目录。
/tmp 一般是 Linux 系统上的临时目录,如果在 Windows 系统上运行,则需要修改为本地环境中已存在的目录,例如: C:\tmp、D:\tmp等。
当上面的代码被编译和执行时,它会在 /tmp 目录中创建一个新的文件 test.txt,并使用两个不同的函数写入两行。
读取文件
fgetc() 函数。
int fgetc( FILE * fp );
从 fp 所指向的输入文件中读取一个字符。返回值是读取的字符,如果发生错误则返回 EOF。
char *fgets( char *buf, int n, FILE *fp );
从 fp 所指向的输入流中读取 n - 1 个字符。它会把读取的字符串复制到缓冲区 buf,并在最后追加一个 null 字符来终止字符串。如果这个函数在读取最后一个字符之前就遇到一个换行符 '\n' 或文件的末尾 EOF,则只会返回读取到的字符,包括换行符。
也可以使用 int fscanf(FILE *fp, const char *format, ...) 函数来从文件中读取字符串,但是在遇到第一个空格和换行符时,它会停止读取。
#include <stdio.h>int main()
{FILE *fp = NULL;char buff[255];fp = fopen("/tmp/test.txt", "r");fscanf(fp, "%s", buff);printf("1: %s\n", buff );fgets(buff, 255, (FILE*)fp);printf("2: %s\n", buff );fgets(buff, 255, (FILE*)fp);printf("3: %s\n", buff );fclose(fp);}
当上面的代码被编译和执行时,它会读取上一部分创建的文件,产生下列结果:
1: This
2: is testing for fprintf...3: This is testing for fputs...
首先,fscanf() 方法只读取了 This,因为它在后边遇到了一个空格。其次,调用 fgets() 读取剩余的部分,直到行尾。最后,调用 fgets() 完整地读取第二行。
二进制 I/O 函数
下面两个函数用于二进制输入和输出:
size_t fread(void *ptr, size_t size_of_elements, size_t number_of_elements, FILE *a_file);size_t fwrite(const void *ptr, size_t size_of_elements, size_t number_of_elements, FILE *a_file);
这两个函数都是用于存储块的读写 - 通常是数组或结构体。
C语言的文件读写函数相关推荐
- c语言文件写入函数有哪些,c语言文件读写函数有哪些?
c语言文件读写函数有:"fgetc"和"fputc"(字符读写函数)."fgets"和"fputs"(字符串读写函数). ...
- 教你如何运用python实现简单文件读写函数
这篇文章主要为大家详细介绍了python实现简单文件读写函数,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 python作为脚本性语言,加上它的简便易用性.会经常当作脚 ...
- C语言之文件读写探究(七):随机读写文件
相关博文:C语言之文件读写探究(一):fopen.fclose(文件的打开和关闭) 相关博文:C语言之文件读写探究(二):fputc.fgetc.feof(一次读写一个字符(文本操作)) 相关博文:C ...
- C语言之文件读写探究(六):fscanf、fprintf(格式化读写文件)
相关博文:C语言之文件读写探究(一):fopen.fclose(文件的打开和关闭) 相关博文:C语言之文件读写探究(二):fputc.fgetc.feof(一次读写一个字符(文本操作)) 相关博文:C ...
- C语言之文件读写探究(四):fwrite、fread(一次读写一块数据(二进制操作))
相关博文:C语言之文件读写探究(一):fopen.fclose(文件的打开和关闭) 相关博文:C语言之文件读写探究(二):fputc.fgetc.feof(一次读写一个字符(文本操作)) 相关博文:C ...
- C语言之文件读写探究(三):fputs、fgets、feof(一次读写一行字符(文本操作))
相关博文:C语言之文件读写探究(一):fopen.fclose(文件的打开和关闭) 相关博文:C语言之文件读写探究(二):fputc.fgetc.feof(一次读写一个字符(文本操作)) 相关博文:C ...
- C语言之文件读写探究(二):fputc、fgetc、feof(一次读写一个字符(文本操作))
相关博文:C语言之文件读写探究(一):fopen.fclose(文件的打开和关闭) 相关博文:C语言之文件读写探究(二):fputc.fgetc.feof(一次读写一个字符(文本操作)) 相关博文:C ...
- C语言的文件读写操作
C语言的文件读写操作 初学系统的时候,老师禁止我们用非系统(system primitive)自带的函数,所以,这次就用open, close, read 和 write写了一个可以读入文本文件并把内 ...
- C语言中文件定位函数总结
C语言中文件定位函数主要是:fseek, ftell, fsetpos, fgetpos. 先来讲前两个函数,这是最基本的定位函数: fseek函数:能把文件指针移动到文件任何位置,其原型是:int ...
- C语言之文件读写探究(五):rewind、ftell、fseek(文件指针偏移)
相关博文:C语言之文件读写探究(一):fopen.fclose(文件的打开和关闭) 相关博文:C语言之文件读写探究(二):fputc.fgetc.feof(一次读写一个字符(文本操作)) 相关博文:C ...
最新文章
- python如何爬虫网页数据-python网络爬虫爬取网页内容
- 大型机,说爱你不容易
- helm的作用及v3版本的架构变化概述
- 今日arXiv精选 | 46篇EMNLP 2021最新论文
- maven-将maven工程打包成可执行jar包
- 我是如何学习写一个操作系统(七):进程的同步与信号量
- 玩转二叉树 (25 分) 知中序遍历和前序遍历,求做个镜面反转后的层序遍历
- java工具栏的工具提示,动态菜单项、状态条提示、工具条提示问题
- 服务器配置列表在哪个文件夹,FolderMagic
- Linux编译安装Apache
- 把arduino当AVRISP烧写器Arduino给Arduino烧boot
- 抢椅子游戏java_抢椅子游戏作文(精选10篇)
- 全新版大学英语综合教程第一册学习笔记(原文及全文翻译)——4 - Tony Trivisonno‘s American Dream(托尼·特里韦索诺的美国梦)
- 含不等式的优化设计matlab,基于Matlab的齿轮传动优化设计
- 美国高防服务器亿速云,亿速云香港高防裸金属服务器上线,更强悍的计算性能,更安全的DDoS攻击防护...
- Owin + WebApi + OAuth2 搭建授权模式(授权码模式 Part I)
- Python Keras ValueError: Layer sequential expects 1 input(s), but it received 2 input tensors. 解决方法
- 计算机英语缩略词大全,计算机英语缩略语大全
- win10解决,你没有权限打开该文件,请向文件的所有者或管理员申请权限
- 2.1 法学的历史(一):西方法学的历史