1.如何从文件中读取数据
打开
读取
关闭
2.如何从文件中写入数据
打开
写入
关闭
3.文件的打开和关闭
打开(fopen):FILE *fopen(const char *pathname,const char *model);
"r" : 只读; 文件不存在报错,文件存在只读打开。
"r+" : 读写打开; 文件不存在报错,文件存在读写打开。
"w" : 只写打开; 文件不存在创建,文件存在清零,只写打开。
"w+" : 写读打开; 文件不存在创建,文件存在清零,写读打开。
"a" : 追加只写打开; 文件不存在创建,文件存在追加只写打开。
"a+" : 追加读写打开; 文件不存在创建,文件存在追加读写打开。
关闭(fclose): int fclose(FILE *stream);
4.文件读写
fgetc/fputc:
int fgetc(FILE *stream);
int fputc(int c, FILE *stream);
主要用于操作单个字符。
fgets/fputs:
char *fgets(char *s, int size, FILE *stream);
int fputs(const char *s, FILE *stream);
主要用于操作一行个字符串。
fread/fwrite:
size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream);
size_t fwrite(const void *ptr, size_t size, size_t nmemb, FILE *stream);
主要用于操作二进制数。
fscanf/fprintf:
int fscanf(FILE *stream, const char *format, ...);
int fprintf(FILE *stream, const char *format, ...);
5.流的定位
fseek : int fseek(FILE *stream, long offset, int whence);
功能:重新设置流的偏移量
参数:
stream : 文件流指针
offset : 偏移量
>0 向后偏移
<0 向前偏移
whence:
SEEK_SET 文件开头
SEEK_CUR 当前位置
SEEK_END 文件末尾
返回值:
成功返回0
失败返回-1
rewind : void rewind(FILE *stream)
将流重定位到开头
== fseek(stream, 0, SEEK_SET);
ftell : long ftell(FILE *stream);
获得当前的偏移量
6.特殊的流:
stdin : 标准输入流
stdout : 标准输出流
stderr : 出错流
与终端建立的流:
getchar、gets、scanf ->stdin
putchar、puts、printf->stdout
perror->stderr