函数原型
1.fgets和fputs
注意:只能操作ASCII码文件
(1)fgets
char *fgets(char *s, int size, FILE *stream);
功能:
从流中读size个字符,遇到EOF或者\n读取停止
参数:
s:存放读取到字符串空间首地址
size:想要读取字符的个数
stream:文件流指针
返回值:
成功返回读取到字符串存放空间的首地址
失败返回NULL
读到文件末尾返回NULL
gets(tmpbuff);
fgets(tmpbuff, sizeof(tmpbuff), stdin);
注意:
gets会去掉从终端接收的\n字符(会将最后一个\n改成\0),gets如果接的字符空间内存的下则无问题,如果超过空间内存大小则会有越界访问的风险,这个也是gets危险的原因
fgets不会去掉从终端接收的\n字符 (在最后一个\n后面加一个\0)
fputs不会像puts一样打印\n
2.fprintf、fscanf
注意:只能操作ASCII码文件
(1)fprintf
int fprintf(FILE *stream, const char *format, ...);
功能:
向流中输出格式化字符串
参数:
stream:文件流指针
format:输入字符串个数
...:对应的实参变量的值
返回值:
成功返回成功打印字符的个数
失败返回负数
(2)fscanf
int fscanf(FILE *stream, const char *format, ...);
功能:
从流中读取格式化字符串
参数:
stream:文件流指针
format:接收字符串的格式
...:存放数据空间首地址
返回值:
成功返回成功匹配输入控制符个数
失败返回EOF
读到文件末尾返回EOF
3.fwrite/fread
1.操作二进制文件
(1)fwrite
size_t fwrite(const void *ptr, size_t size, size_t nmemb,
FILE *stream);
功能:
向流中写入nmemb个对象,每个对象size个字节,在ptr指向的空间中
参数:
ptr:存放数据空间首地址
size:对象的大小
nmemb:对象的个数
stream:文件流指针
返回值:
成功返回写入对象的个数
失败返回0
(2)fread
size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream);
功能:
从流中读取nmemb个对象,每个对象size个字节,存放到ptr指针指向的空间中
参数:
ptr:存放数据空间首地址
size:每个对象的大小
nmemb:对象的个数
stream:文件流指针
返回值:
成功返回读取对象的个数
失败返回0
读到文件末尾返回0
size_t 类型就是无符号的整型
4.流的定位:
(1)fseek
int fseek(FILE *stream, long offset, int whence);
功能:
重新设置文件位置标识(偏移量)
参数:
stream:文件流指针
offset:偏移量
> 0 向后偏移
< 0 向前偏移
whence:标志
SEEK_SET 从文件开头偏移
SEEK_CUR 从当前位置偏移
SEEK_END 从文件末尾偏移
返回值:
成功返回0
失败返回-1
(2)ftell
long ftell(FILE *stream);
功能:
获得流的偏移量
参数:
stream:文件流指针
返回值:
成功返回当前偏移量
失败返回-1
(3)rewind
void rewind(FILE *stream);
功能:
将流重定位到开头
参数:
文件流指针
返回值:
缺省