学习笔记。
一、文件创建,打开和关闭
头文件:#include<stdio.h>
FILE *fopen(const char *path,const char *mode);//打开文件
int fclose(FILE *stream);//关闭文件
例如:
FILE *fp=fopen("file","ab+");//以ab+模式打开file文件
flose(fp);//关闭文件
其中,mode有六种模式:
模式 | 读 | 写 | 位置 | 截断原内容 | 创建 |
---|---|---|---|---|---|
rb | Y | N | head | N | N |
rb+ | Y | Y | head | N | N |
wb | N | Y | head | Y | Y |
wb+ | Y | Y | head | Y | Y |
ab | N | Y | tail | N | Y |
ab+ | Y | Y | tail | N | Y |
二、读写文件
1、数据块读写:
size_t fread(void *ptr,size_t size,size_t nmemb,FILE *stream);//从文件流stream中读取nmemb个元素内容到ptr所指内存,每个元素大小为size
size_t fwrite(void *ptr,size_t size,size_t nmemb,FILE *stream);//将ptr所指的内存空间中nmemb个每个元素大小为size的元素写入到文件流stream中
例:
main.c:
1 #include <func.h>
2
3 int main(int argc,char* argv[])
4 {
5 ARGS_CHECK(argc,2);
6 FILE *fp=fopen(argv[1],"rb+");//以rb+方式打开文件
7 char buf[128]={
0};
8 fread(buf,5,sizeof(char),fp);//读取文件中5个字符
9 printf("%s\n",buf);
10
11 fclose(fp);
12 return 0;
13 }
结果:
2、文件定位
函数:
int fseek(FILE *stream, long offset, int whence);
void rewind(FILE *stream);//将文件流读写位置移到文件开头
whence 表示文件指针偏移位置,可以是以下几个:
- SEEK_SET //文件开头,0
- SEEK_CUR //文件当前位置,1
- SEEK_END //文件末尾,2
示例代码:
1 #include <func.h>
2
3 int main(int argc,char* argv[])
4 {
5 ARGS_CHECK(argc,2);
✹ 6 int ret;
7 FILE *fp=fopen(argv[1],"rb+");
8 char buf[128]={
0}