文件的简单学习

文件输入输出:

  • 用>和<做重定向,>是把输入写进另一个文件,<是从文件中获取
1 FILE* fopen(const char* resrict path,const char* restrict mode);
2 int fclose(FILE *stream);
3 fscanf(FILE*,...)

打开文件的标准代码:

1 FILE* fp=fopen("file","r");
2 if(fp){
3     fscanf(fp,...);
4     fclose(fp);
5 }else{
6     ...
7 }

fopen:

r 打开只读
r+ 打开读写,从文件头开始
w 打开只写。如果不存在则新建,如果存在则清空
w+ 打开读写。如果不存在则新建,如果存在则清空
a 打开追加。如果不存在则新建,如果存在则从文件尾开始
..x 只新建,如果文件已经存在则不能打开

二进制文件:

  • 其实所有的文件最终都是二进制的
  • 文本文件无非是用最简单的方式可以读写的文件
  • more、tail
  • cat
  • vi
  • 而二进制文件是需要专门的程序来读写的文件
  • 文本文件的输入输出是格式化,可能经过转码
  • 二进制读写:size_t fread(void *restrict ptr,size_t size,size_t nitems,FILE *restrict stream);
  • size_t fwrite(const void *restrict ptr,size_t size,size_t nitems,FILE *restrict stream);
  • 注意FILE指针是最后一个参数
  • 返回的是成功读写的字节数
  • 为什么有nitems,因为二进制文件的读写一般都是对一个结构变量的操作来进行的,于是nitem就是用来说明这次读写几个结构变量

在文件中定位:

  • long ftell(FILE *stream);
  • int fseek(FILE *stream,long offset,int whence);
  • SEEK_SET:从头开始
  • SEEK_CUR:从当前位置开始
  • SEEK_END:从尾开始(倒过来)
  • 例如:fseek(fp,0L,SEEK_END)

 

posted @ 2023-03-30 21:26  xxxbai  阅读(71)  评论(0)    收藏  举报