- fopen, - stream open functions
FILE *fopen(const char *path, const char *mode);
path: 要打开的文件名(带路径), 普通文件(文本文件,二进制文件)
mode: 指向一个字符串。打开文件的方式:
“r” : 只读方式打开。文件不存在,则报错。打开后,光标在文件头。
“r+”: 读写打开。文件不存在,则报错。打开后,光标在文件头。
“w”: 只写的方式打开。文件不存在,则创建。打开后,文件截短(文件内容清0), 光标定位在开头。
“w+”:读写打开。文件不存在,则创建。
打开后,文件截短。
“a”: append 追加。追加打开,文件不存在,则创建。打开后,光标定位在末尾。
“a+”:读写打开。文件不存在,则创建。
//打开后,光标位置未定义。
//原始读的位置在开头,原始写的位置在末尾。(linux)
返回值:
成功返回FILE指针,
失败返回NULL
- fclose 关闭文件流
int fclose(FILE *fp);//关闭一个文件流
返回值:
成功返回0,
失败返回-1,errno被设置
3.scanf、gets和fgets获取字符串时的区别
1.scanf()
所在头文件:stdio.h
语法:scanf(“格式控制字符串”,变量地址列表);
接受字符串时:scanf(“%s”,字符数组名或指针);
2.gets()
所在头文件:stdio.h
语法:gets(字符数组名或指针);
两者在接受字符串时:
1.不同点:
scanf不能接受空格、制表符Tab、回车等;
而gets能够接受空格、制表符Tab和回车等;
2.相同点:
字符串接受结束后自动加’\0’。
例1:
#include <stdio.h>
main()
{
char ch1[10],ch2[10];
scanf("%s",ch1);
gets(ch2);
}
依次键入asd空格fg回车,asd空格fg回车,则ch1="asd\0",ch2="asd fg\0"。
3、fgets函数
从流中读一行或指定个字符,原型是char *fgets(char *s, int n, FILE *stream);
从流中读取n-1个字符,除非读完一行,参数s是来接收字符串,如果成功则返回s的指针,否则返回NULL。
形参注释:*s结果数据的首地址;n-1:一次读入数据块的长度,其默认值为1k,即1024;stream文件指针
二.printf、fprintf、sprintf的区别
1..fprintf: #include <stdio.h> int fprintf( FILE *stream, const char *format, ... )
fprintf()函数根据指定的format(格式)发送信息(参数)到由stream(流)指定的文件.因此fprintf()可以使得信息输出到指定的文件
2.sprintf是格式化输出到一个字符串