标准文件IO以及scanf fgets gets 以及printf sprintf fprintf的区别

来源:互联网 发布:淘宝达人申请大v 编辑:程序博客网 时间:2024/05/09 02:43
  1. 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

  1. 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

0 0
原创粉丝点击