当前位置:网站首页 > R语言数据分析 > 正文

ifstream在哪个头文件(ifstream写文件)




sheeta1998


一.文件指针
  • 在c语言种用一个指针变量指向一个文件,这个指针即为文件指针,可通过文件指针对其所指文件进行操作。

  • C语言内置的文件指针类型FILE*:
    FILE *指针名

  • 标准输入库stdio.h中定义的三个指针类型的常量:
    • stdin:内存中与键盘对应的文件信息区。
    • stdout:内存中与显示屏幕对应的文件信息区。
    • stderr:用来输出出错的信息。

文件里还有位置指针,相当于光标。


二.操作文件须知
  • 文件路径
    即文件在电脑的位置,有两种:
    • 绝对路径 c:…
      以盘符为开始。
    • 相对路径 aaaa.txt
      相对于当前项目而言,参照物即为当前项目。

路径在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
 

  • 读取数据

方法名使用方式注意点fgetcfgetc(文件指针)一次只会读一个字符,
每次读完会自动跳到下一个字符;
当所有字符读完时,会返回-1,可用%d承接并进行逻辑判断。
可配合eof进行使用fgetsfgets(int arr[],数组长度1024的整数倍,文件指针)一次读一行字符串,以换行符为准,
每次读完会自动跳到下一行字符串,读不到返回null。freadfread(数组,每个内容物占多少字节,数组长度,文件指针)0.一次读多行
1.中文的abc为两个字节
2.读取时会把数组装满,并返回当前读取到的有效字节个数。
3.100字节,数组长度30,第一次读30,第二次读30,第三次读30,第四次读10,第五次返回0
4.读中文读到一半返回乱码。
5.直接使用会使得没有0终止符,应利用循环遍历每个字符。


  • 写出数据:将程序中的数据写到本地文件中永久储存

方法名使用方式注意点fputcfputc(要写入的字符的编码,文件指针)一次写一个字符,并会返回写出的字符如果写出失败,返回-1fputsfputs(要写入的字符串,文件指针)一次写一个字符串,写出成功返回非负数,如果写出失败,会有一个eof的错误fwritefwrite(数组,每个元素占用字节,数组长度,路径指针)一次读写多个,返回写出的字节个数数组里填字符编码

  • 关闭文件:fclose
    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写文件)的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!

版权声明


相关文章:

  • 搭建git服务器(在windows server)(搭建git服务器web界面)2024-12-27 22:18:06
  • codependent no more书有译本吗(code kunst people百度云)2024-12-27 22:18:06
  • hprof怎么读(/hp怎么读)2024-12-27 22:18:06
  • 如何打开目录对话框(在word2007中,如何打开目录对话框)2024-12-27 22:18:06
  • aifree耳机是什么牌子(aifree是苹果耳机吗)2024-12-27 22:18:06
  • ldr arm指令(arm指令adr)2024-12-27 22:18:06
  • 数组的some和every方法(数组的equals方法)2024-12-27 22:18:06
  • ar是什么意思中文翻译(appear是什么意思中文翻译)2024-12-27 22:18:06
  • dockerdesktop运行错误(docker desktop is shutting down)2024-12-27 22:18:06
  • uchar(uchar范围)2024-12-27 22:18:06
  • 全屏图片