一.文件指针
- 在c语言种用一个指针变量指向一个文件,这个指针即为文件指针,可通过文件指针对其所指文件进行操作。
- C语言内置的文件指针类型FILE*:
FILE *指针名
- 标准输入库stdio.h中定义的三个指针类型的常量:
- stdin:内存中与键盘对应的文件信息区。
- stdout:内存中与显示屏幕对应的文件信息区。
- stderr:用来输出出错的信息。
文件里还有位置指针,相当于光标。
二.操作文件须知
- 文件路径
即文件在电脑的位置,有两种:- 绝对路径 c:…
以盘符为开始。 - 相对路径 aaaa.txt
相对于当前项目而言,参照物即为当前项目。
- 绝对路径 c:…
路径在c语言中以字符串的形式来进行表示
- 转义字符:
通过转义字符便能输入文件路径中的反斜杠了。
- 读写模式:
modemeanpoints for attentionr只读w只写1.文件不存在,创建新文件。
2.文件已存在,清空文件。
3.创建或者清空,都是fopen这个函数底层干的事a追加写出模式1.文件不存在,创建新文件。
2.文件已存在,在其后续写。rb:只读(负责二进制)wb:只写 (负责二进制)ab:追加写出(负责二进制)r+读写打开一个文本文件w+读写打开或建立一个二进制文件a+读写打开一个文本文件rb+以二进制读写打开一个文本文件wb+以二进制读写打开或建立一个二进制文件ab+以二进制读写打开一个文本文件
音频,视频皆为二进制
扩展:“r+”与“w+”:
- 如果试图以 “r+” 模式打开一个不存在的文件,程序会遇到错误,通常会导致 fopen 返回 NULL。在这种情况下,程序需要检查文件是否成功打开,并进行适当的错误处理。
- 当以 “w+” 模式打开一个不存在的文件时,会自动创建一个新的空文件,准备进行读写操作。所以在不知道文件是否存在的情况下,使用 “w+” 模式相对比较方便,但要注意原有文件内容会被清空这一行为。
三.操作文件
- 打开文件:fopen
- 读取数据
每次读完会自动跳到下一个字符;
当所有字符读完时,会返回-1,可用%d承接并进行逻辑判断。
可配合eof进行使用fgetsfgets(int arr[],数组长度1024的整数倍,文件指针)一次读一行字符串,以换行符为准,
每次读完会自动跳到下一行字符串,读不到返回null。freadfread(数组,每个内容物占多少字节,数组长度,文件指针)0.一次读多行
1.中文的abc为两个字节
2.读取时会把数组装满,并返回当前读取到的有效字节个数。
3.100字节,数组长度30,第一次读30,第二次读30,第三次读30,第四次读10,第五次返回0
4.读中文读到一半返回乱码。
5.直接使用会使得没有0终止符,应利用循环遍历每个字符。
- 写出数据:将程序中的数据写到本地文件中永久储存
- 关闭文件:fclose
- 格式化读写
- 写
fprintf - 读
fscanf
- 写
读取,即输入流,
写到本地,输出流,
是以程序的角度来看待方向,程序读取本地文件即为输入。
四.错误检查
- 返回错误信息:perror
- 检测文件结束状态:feof
feof(FILE *ptr);//结束了返回1。
- 检查是否出错:ferror
ferror(FILE *pr);//注意在每次执行fopen函数之前将ferror初始值重置为零。
- 清除出错标志和文件结束标志,使其为零值:clearerr
clearerr(FILE *pr)
错误标志会一直保留直到对同一文件调用clearerr或rewind函数。
五.文件的随机读写(对文件位置指针的操作)
- 将位置指针调到文件开始位置:rewind()
rewind()
- 用于设置文件流stream的文件位置指针:fseek()
int fseek(FILE *stream, long int offset, int whence);
stream:指向要操作的文件流的指针。这个文件流通常是通过fopen函数打开的文件。
offset:是一个长整型值,表示相对于whence的偏移量。可以是正数、负数或零。
whence:指定偏移量的起始位置,有以下三种取值:
SEEK_SET:表示从文件开头开始计算偏移量。例如,fseek(fp, 10L, SEEK_SET)将文件位置指针移动到文件开头往后 10 个字节的位置。
SEEK_CUR:表示从当前文件位置指针的位置开始计算偏移量。例如,如果当前文件位置指针在文件的第 50 个字节处,fseek(fp, -20L, SEEK_CUR)将文件位置指针移动到当前位置往前 20 个字节的位置,即第 30 个字节处。
SEEK_END:表示从文件末尾开始计算偏移量。通常用于计算文件大小或在文件末尾进行追加操作。例如,fseek(fp, -10L, SEEK_END)将文件位置指针移动到文件末尾往前 10 个字节的位置。成功时返回 0,失败时返回非零值。常见的失败情况包括:文件流无效、whence参数取值错误、尝试移动到超出文件范围的位置等。
- 返回文件流stream的当前文件位置指针相对于文件开头的偏移量:ftell()
long int ftell(FILE *stream);
成功返回当前偏移量,失败返回 -1L。
EX.值得一看的使用例
其中ch==EOF的判断条件可以用feof(fp)替换。
按常理来说,如果没有该文件的话应该会创建antword.txt这样一个文件,但前提是files这个文件夹存在!否则就算没有也无法创建该文件!
此处主要是强调一下rewind()的重要性。
到此这篇ifstream在哪个头文件(ifstream写文件)的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!
版权声明:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权、违法违规、事实不符,请将相关资料发送至xkadmin@xkablog.com进行投诉反馈,一经查实,立即处理!
转载请注明出处,原文链接:https://www.xkablog.com/rfx/19944.html