文件操作:
1.fopen
FILE* fopen(const char *pathname, const char *mode);
功能:打开一个文件,并获得一个文件流指针
1.参数:
pathname:文件名
mode:打开方式
r:只读;文件必须存在
r+:以读写方式打开;文件必须存在
w:以写的方式打开;文件存在:清空;文件不存在:创建
w+:以读写方式打开;文件存在:清空;文件不存在:创建
a:打开追加写;文件不存在:创建
a+:读、追加写;文件不存在:创建
2.返回值:
成功:文件流指针
失败:NULL
2.fclose
int fclose(FILE *fp);
1.参数:
fp:文件流指针
2.返回值:
成功返回0
失败返回EOF(-1)
3.注意:fopen操作完毕后使用fclose关闭,否则会产生内存泄漏
不要重复调用fclose
3.fputc
int fputc(int c, FILE *stream);
1.功能:
向流中写入一个字符
2.参数:
c:要写入的字符
stream:文件流指针
3.返回值:
成功返回 写入的字符ASCII码值
失败返回 EOF
4.fgetc
int fgetc(FILE *stream);
1.功能:
从流中读取一个字符
2.参数:
stream:文件流指针
3.返回值:
成功返回读到字符的ASCII码值
读到文件末尾 返回 EOF
失败返回EOF
5.fgets
//按行读写 按字符串读写
fgets -- char ---> string
fputs -- char ---> string
char *fgets(char *s, int size, FILE *stream);
1.功能:
从stream流对象关联的文件中获取size大小字节的文本数据
并存储到s对应的本地内存(栈区数组,堆区内存)
2.参数: s 要存储数据的本地内存(栈,堆)
size 要获取的数据长度,单位字节。
stream 要获取的目标文件流对象,
可以是stdin ,程序会阻塞等待
如果是普通文件fp 则指向文件第一行数据
3.返回值:成功 返回指向有效数据的首地址,一般等于s的地址
失败 或者 文件末尾 NULL;
6.fputs
int fputs(const char *s, FILE *stream);
1.功能:
向流中写入一行字符串
2.参数: s
要写的信息,一般是固定的字符串或者有数据的数组。
stream
要写入的目标文件流对象
3.返回值:成功 nonnegative number on success
失败 -1;
注:
不写入 '\0'
puts和fputs的区别:
1.fputs不会自动增减\n
2.puts 会多打印\n字符