getchar(),putchar() ‐‐‐‐
一个字符
gets(buf),puts(buf) ‐‐‐‐
一串字符
scanf(),printf() ‐‐‐‐
一个字符,一串字符都可以
fopen函数的形式
FILE * fopen(constchar *path , cost char *mode)
/*
* @description :
打开一个文件
* @param ‐ path :
指定文件路径
,
如:
"./test.txt"
* @param ‐ mode
:指定文件的打开方式,如下图:
* @return :fopen: 成功,返回指向该文件的文件指针; 若失败,返回 NULL
*/
mode有以下值:
r
:只读方式打开,文件必须存在
r+
:可读写,文件必须存在
rb+
:打开二进制文件,可以读写
rt+:
打开文本文件,可读写
w:
只写,文件存在则文件长度清
0
,文件不存在则建立该文件
w+:
可读写,文件存在则文件长度清
0
,文件不存在则建立该文件
a:
附加方式打开只写,不存在建立该文件,存在写入的数据加到文件尾,
EOF
符保留
a+
:附加方式打开可读写,不存在建立该文件,存在写入的数据加到文件尾,
EOF
符不保留
wb
:打开二进制文件,只写
wb+:
打开或建立二进制文件,可读写
wt+:
打开或建立文本文件,可读写
at+:
打开文本文件,可读写,写的数据加在文本末尾
ab+:
打开二进制文件,可读写,写的数据加在文件末尾
fclose函数的形式
函数原型:int fclose(FILE*stream)
关闭一个文件流,使用
fclose
就可以把缓冲区内最后剩余的数据输出到磁盘文件中,并释放文件指针和有关的缓冲区
/*
* @description :
关闭一个已打开的流
* @param ‐ stream :
文件指针(流)
* @return : fclose:成功,返回0; 若失败,返回EOF
*/
#include<stdio.h>
int main()
{
FILE *fp = NULL;/*create a null file创建一个空的指针文件*/
int nRet = 0 ;
fp =fopen("mm","w");/*fp mode w,create*打开指针文件mm,模式为w 可写,没有文件则创建文件/
if (fp == NULL)/*NUll open failed!如果创建不成功,则fp=NULL*/
{
printf("open failed!\n");
return -1;
}
printf("open success!\n");/*成功打开则输出打开成功*/
nRet = fclose(fp);
if(nRet)/*close success,others failed!*如果关闭成功则返回0,如果返回其他,则关闭不成功*/
{
printf("close failed!\n");
return -2;
}
printf("close success!\n");/*成功则返回关闭成功*/
return 0;
}
~
lpych@lpych-virtual-machine:~$ gcc demo2.c -o demo
编译demo2.c 编译完后的文件为demo
lpych@lpych-virtual-machine:~$ ./demo
运行demo
提示:open success!
close success!
说明打开和关闭文件 mm成功!
lpych@lpych-virtual-machine:~$ ls -l
查看文件的权限,mm文件
因为之前mm文件有创建过,模式为0755,可读可写可执行,可读可执行,可读可执行
因此 lpych用户,可读可写可执行,组用户,可读可执行,其他用户,可读可执行
之前有操作生成过mm,将新文件命名ll
#include<stdio.h>
int main()
{
FILE *fp = NULL;
int nRet = 0 ;
fp =fopen("ll","w");
if (fp == NULL)
{
printf("open failed!\n");
return -1;
}
printf("open success!\n");
nRet = fclose(fp);
if(nRet)
{
printf("close failed!\n");
return -2;
}
printf("close success!\n");
return 0;
}
~
lpych用户,可读可写,组用户,可读,其他用户,可读
与w模式相对应