文件操作函数
一.文件打开
FILE *fopen(char *file,char *open_mode);//在当前目录下打开一个文件第一个参数为要打开的文件,第二个参数是文件类型和操作要求。
二.带f(fgetc.fputc)的是通过函数来实现的,不带f(getc.putc)的是通过宏定义来实现的。调用函数通常所需时间长于调用宏。
1.getc和fgetc
getc(FILE *stream),fgetc(FILE *stream)两者在c语言中用法相同。
2.putc,putchar,fputc
putc(ch,file/stdout)将字符ch输出到file中或在屏幕(stdout)上
putchar(char ch)将字符ch输出到标准输出设备上
fputc(ch,file/stdout)将字符ch输出到file中或在屏幕(stdout)上
区别:putc是文件操作函数,putchar是设备操作,是在<stdio.h>里定义的宏。两者在c语言中用法相同。
3.gets,fgets
gets(char *buffer)从键盘读取字符到buffer指针指向的字符数组,直至接受到换行符或EOF时停止,读取的换行符被转化为null值,做为字符数组的最后一个字符来结束字符,读取字符到数组:gets(数组名)。
fgets(char *s,int max_size,FILE *fp)从文件结构体指针中读取一行数据到缓冲区s指向的字符数组中,每次最多读取max_size-1个字符(第max_size个字符赋’\0’),该行不足max_size-1,则读完就结束,字符超过max_size-1,返回一个不完整的行,下次调用继续读该行.函数成功返回s,失败或读到文件末尾返回NULL。
gets函数由于没有指定输入字符大小,所以会无限读取,一旦输入的字符大于数组长度,就会发生内存越界,从而造成程序崩溃或其他数据的错误.而fgets不会。
4.puts,fputs
puts(s)(s为字符串数组名或字符串指针)用来向标准输出设备写字符串并换行:
(1).只能输出字符串,不能输出数值或进行格式转换。
(2).可以将字符串直接写入puts()函数中。
fputs(char *s,FILE *stream)将指定的字符串写入文件流中,不包含字符串结尾符’\0’,返回值是字符,发生错误返回EOF。
三.文件关闭
fclose(fp)关闭文件。
四.文件指针
要先用FILE声明一个文件指针变量,再用文件函数操作。
FILE是一个在stdio.h中预先定义的一个文件类型,是一个结构体指针,存放着open打开的文件的信息,包括文件名,缓冲区等。文件指针是其中的一个成员,打开成功作了内存分配和初始化。