文件IO编程八

这一节主要是讲标准IO

标准IO的操作对象是文件指针,FILE *。而且标准IO是有缓冲区的。stdout是行缓冲。这个文件指针则是由fopen()函数获取的。

文件IO编程八

(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 中也是一样,他们在程序的一开始就已经拥有相应的文件指针了:

                        文件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是指定从键盘输入