c语言操作目录,c语言文件操作整理
推荐《c陷阱与缺陷》
FILE *fp;fp = fopen(file, "r+");
编程者也许认为,程序一旦执行上述操作完毕,就可以自由地进行读取和写入的操作了。遗憾的是,事实总难遂人所愿,为了保持与过去不能同时进行读写操作的程序的向下兼容性,一个输入操作不能随后直接紧跟输出操作,反之亦然。如果同时进行输入和输出操作,必须在其中插入fseek函数调用。
这个陷阱把我坑了一把,所以将c库函数文件操作学习整理一番,方便自己以后查阅。
- FILE结构体在stdio.h中定义的FILE结构体。
#ifndef _FILE_DEFINED struct _iobuf { char *_ptr; //文件输入下一个位置 int _cnt; //当前缓冲区相对位置 char *_base; //文件起始位置 int _flag; //文件标志 int _file; //文件描述符 int _charbuf; //检查缓冲区状况,如果无缓冲区则不读取 int _bufsiz; //缓冲区大小 char *_tmpfname; //临时文件名 }; typedef struct _iobuf FILE;#define _FILE_DEFINED#endif
- 文件的打开
FILE *fopen(const char *path, const char *mode);
1.功能按照mode规定的方式去打开path里指定文件。2.参数 path是个字符指针,指向打开或建立文件的字符串 mode是指向文件处理的字符串的指针
3.返回值正常:被打开文件的FILE指针 异常:NULL,未成功打开
- 文件的关闭
int fclose(FILE *fp);
1.功能关闭由fp指出的文件,调用操作系统提供的文件关闭功能。2.参数 fp:打开文件的FILE指针3.返回值 正常:0 异常:EOF
- 文件读取①字符读取
int fgetc(FILE *stream);
1.功能从stream所指文件中读取一个字符2.参数 stream:要读取字符文件的FILE指针3.返回值 正常:返回读取字符 异常:返回EOF
②字符串读取
char *fgets(char *s, int size, FILE *stream);
1.功能从stream中读取大小为size-1的字符,最后加上字符串结束符'\0'2.参数 s:接收字符串的地址,数组或是指针 size:读取字符大小 stream:读取的文件的FILE指针3.返回值 正常:字符串首地址(char *s的地址) 异常:NULL
使用feof或是ferror去判别是否到达文件尾部和发生错误。
- 文件的写入①字符写入
int fputc(int c, FILE *stream);
1.功能把字符c写入stream指向的文件2.参数 c:字符 stream:写入的文件的FILE指针3.返回值 正常:写入字符 异常:EOF②字符串的写入
int fputs(const char *s, FILE *stream);
1.功能将str写入stream指向的文件中2.参数 s:写入字符串 stream:要写入字符串的文件的FILE指针3.返回值 正常:写入的字符串长度 异常:返回NULL
使用feof或是ferror去判别是否到达文件尾部和发生错误。
③格式化数据写入
int fprintf(FILE *stream, const char *format, ...);
1.功能与printf功能相同,写入文件中2.参数 stream:写入的文件的FILE指针 format:字符串指针,其中包含写入数据的格式3.返回值 无
- 二进制形式的读写
①二进制形式读取文件数据
size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream);
1.功能按二进制形式将stream指向的文件的size*nmemb的数据读到ptr数据区去2.参数 ptr:viod指针类型,读到数据存放的首地址 size:数据块的大小,字节数 nmemb:一次读多少数据块 stream:要读取数据文件的FILE指针3.返回值 正常:实际读取数据块个数 异常:0(具体通过feof()和ferror()判定)②二进制形式写数据
size_t fwrite(const void *ptr, size_t size, size_t nmemb,FILE *stream);
与fread相反
③二进制形式读取一个整数
int getw(FILE *stream);
④二进制形式写入一个整数
int putw(int w, FILE *stream);
- 文件状态检查①文件结束
int feof(FILE *stream);
1.功能判断文件是否结束2.返回值 0:文件未结束 1:文件结束②文件读写出错
int ferror(FILE *stream);
1.功能检查读写stream指向的文件是否出错2.返回值 0:无错误 1:出错③错误标志清除
void clearerr(FILE *stream);
1.功能清楚stream指向的文件的错误标志
- 文件的操作的文件①当前文件位置
long ftell(FILE *stream);
1.功能文件开头与当前的偏移量2.返回值 正常:位移量 异常:-1
②倒带
void rewind(FILE *stream);
1.功能文件位置指针重新指向开头
③fseek
int fseek(FILE *stream, long offset, int whence);
1.功能使文件定位移到指定位置:基于whence的相对offest位置处2.参数 offset:字节位移量 whence: SEEK_SET 0 文件开头 SEEK_CUR 1 文件当前位置 SEEK_END 2 文件末尾3.返回值 正常:当前位置 异常:-1
- exit()函数
void exit(int status);
1.功能使程序立即终止执行,将缓冲区数据输出并关闭所有打开文件2.参数
举报/反馈
c语言操作目录,c语言文件操作整理相关推荐
- c语言 文件课件,C语言课件第13章-文件操作.ppt
C语言课件第13章-文件操作.ppt 第13章文件操作 哈尔滨工业大学计算机科学与技术学院苏小红sxh 本章学习内容 二进制文件和文本文件 文件的打开和关闭 文件的顺序读写与随机读写 标准输入输出及其 ...
- 学生管理系统 C语言 动态链表 结构体 文件操作 设置密码 输入密码回显星号
C语言 学生管理系统代码 实现功能 功能:学生管理系统设计,每个学生信息作为一条记录,包括姓名.学号.专业. 性别.年龄. 电话.家庭住址.还可以继续拓展 系统要求实现以下功能: 1.输入功能: ...
- SpringBoot打开resources目录下的文件操作
SpringBoot打开resources目录下的文件操作 背景 我想在SpringBoot项目中放入一个静态文件.json文件.然后在SpringBoot项目内可以打开并读取此json文件. [外链 ...
- C# 对Ini文件操作(C# ini文件操作类)
*************************************************** 更多精彩,欢迎进入:http://shop115376623.taobao.com ****** ...
- HDFS的常用操作--hdfs下的文件操作常用命令总结
1.创建目录命令 HDFS有一个默认的工作目录/user/$USER,其中$USER是用户的登录用户名.不过目录不会自动建立,需要mkdir建立它 命令格式:hadoop fs -mkdir 如: 在 ...
- python文件操作的方法_python文件操作的方法介绍
文件操作 1.open()函数 open()函数主要用于文件处理,一般分为下面3个过程:1.打开文件 2.操作文件 3.关闭文件 常见的格式示例:f = open('note.txt','r') f. ...
- C 语言编程 — 输入/输出与文件操作
目录 文章目录 目录 前文列表 输入/输出 scanf() 和 printf() getchar() 和 putchar() 文件操作 打开文件 关闭文件 写入文件 读取文件 二进制 I/O 函数 前 ...
- python操作目录_Python语言目录操作一
本文主要向大家介绍了Python语言目录操作一,通过具体的内容向大家展示,希望对大家学习Python语言有所帮助. 目录操作 Python os 模块提供了一个统一的操作系统接口函数, 这些接口函数通 ...
- linux c文件操作,C语言文件操作(FILE)与常用文件操作函数
文件 1.文件基本概念 C程序把文件分为ASCII文件和二进制文件,ASCII文件又称文本文件,二进制文件和文本文件(也称ASCII码文件)二进制文件中,数值型数据是以二进制形式存储的, 而在文本文件 ...
最新文章
- iOS - 实现映客首页 TabBar 和滑动隐藏 NavBar 和 TabBar
- 怎么通过ip连接oracle,Oracle 无法通过IP连接问题
- 第十、十一周项目五 - 摩托车继承自行车和机动车
- 简单配置局域网FTP
- NumPy之:使用genfromtxt导入数据
- PCL:全程详解 VS2010+PCL配置
- python dataframe float转string_盘点Python:Pandas1.0的主要功能
- c .net ajax,Asp.net mvc 2中使用Ajax的三种方式
- 如何ping端口_干货 | 如何正确处理常见的8大网络故障
- SQL_delete删除数据
- android 滑动缩放监听,基于Android的ViewPager动画特效实现页面左右滑动效果(实现缩放...
- UE4之Obj模型解构解析
- 【经典】具有中国特色的脑筋急转弯
- 共享计算机后无法访问磁盘,Win7系统下无法访问共享硬盘怎么办?
- vivado使用笔记(1)--防止信号被综合优化dont touch
- ubuntu 启动 meld、diffuse失败
- HTML绘制交互图,基于 HTML5 Canvas 的交互式地铁线路图
- 探索编译软件栈新范式;高端GPU禁售的影响;陈天奇DL系统免费课程|AI系统前沿动态
- vue 导出为 word
- 《缠中说禅108课》9:甄别“早泄”男的数学原则
热门文章
- XenServer 6.5实战系列之三:Prepare for XenServer 6.5
- Bash+R: howto pass parameters from bash script to R(转)
- 1815. 计算两点间的距离
- flex自定义的分区域状态显示控件——原创
- 安装SQL SERVER 2000时提示:以前的某个程序安装已在安装计算机上创建挂起的文件操作。...
- C# 如何生成一个时间戳
- 反射型XSS漏洞详解
- MySQL 高可用:mysql+mycat实现数据库分片(分库分表)
- 超大数据量存储常用数据库分表分库算法总结
- regedit start mysql_MySQL安装完成配置的时候start service报错