文件输入输出:
- 用>和<做重定向,>是把输入写进另一个文件,<是从文件中获取
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)
标签:文件,stream,读写,学习,FILE,简单,restrict,size From: https://www.cnblogs.com/TiAmo-bai/p/17274405.html