文件IO编程八
这一节主要是讲标准IO
标准IO的操作对象是文件指针,FILE *。而且标准IO是有缓冲区的。stdout是行缓冲。这个文件指针则是由fopen()函数获取的。
(1) fopen
FILE *fopen(const char *path, const char *mode);
头文件 #include <stdio.h>
path:要打开的文件。
mode: “r”: 以只读方式打开文件,要求文件必须存在。
“r+”: 以读写方式打开文件,要求文件必须存在。
“w”: 以只写方式打开文件,文件如果不存在将会创建新文件,如果存在将会将其内容清空。
“w+” : 以读写方式打开文件,文件如果不存在将会创建新文件,如果存在将会将其内容清空。\
“a” : 以只写方式打开文件,文件如果不存在将会创建新文件,且文件位置偏移量被自动定位到文件末尾(即以 追加方式写数据)。
“a+” : 以读写方式打开文件,文件如果不存在将会创建新文件,且文件位置偏移量被自动定位到文件末尾(即 以追加方式写数据)。
(2) fclose
int fclose(FILE *fp);
头文件 #include <stdio.h> 关闭指定的文件并释放其资源
失败返回EOF,成功返回0。
该函数用于释放由 fopen( )申请的系统资源,包括释放标准 IO 缓冲区内存,因此fclose( )不能对一个文件重复关闭。标准输入输出设备是默认被打开的,在标准 IO 中也是一样,他们在程序的一开始就已经拥有相应的文件指针了:
(3) fgetc
头文件:include<stdio.h>
定义函数:int fgetc(FILE * stream);
说明:fgetc()从参数stream所指的文件中读取一个字符。若读到文件尾而无数据时便返回EOF
FILE *fp = fopen(argv[1], "r");
if(fp == NULL)
{
perror("fopen() failed");
exit(1);
}
while(1)
{
int c = fgetc(fp);
if(c == EOF)
break;
// printf("%c", c);
fprintf(stdout, "%c", c);
}
fclose(fp);
printf 指定向屏幕这个文件输出
fprintf 是可向别的文件
getchar是指定从键盘输入