程序和文件进行通信简单的一种方式是通过文件重定向,
文件:
文件,它其实是在磁盘上的一段存储区,之不过它是已命名的。它分为文本视图和二进制视图。在二进制视图中,文件中的每个字节都可为程序所访问,而在文本视图中,程序看到的内容和文件的内容有可能不同。
i/o级别:
低级I/O:使用操作系统提供的基本I/O服务。标准高级I/O:使用一个标准的C库函数包和头文件中的定义(可移植性好, 处理不同I/O方便,处理速度快(缓冲))。
exit()函数:
它的作用是关闭所有打开的文件并终止程序,它的参数会被传递给一些操作系统,以供其他程序使用。通常的约定是正常的终止的程序传递值0,非正常终止的程序传递一个非0值,不同退出值可以用来标识导致程序失败的不同原因。在最初调用的main ()中使用return 和调用exit ()效果相同,如果是在递归中程序中,exit()仍然会终止程序,但return
将控制权移交给递归的前一级,直到最初的那一级,此时return才会终止程序。也就说retrun和exit()的区别在于,即使在除main()之外的函数中调用exit (),它也将终止程序。
fopen ()函数:函数原型:FILE * fopen(const char * path,const
char * mode);
fopen ()函数接受两个参数。第一个参数为要打开的文件名(包含该文件名的字符串的地址),第二个用于指定文件打开的模式的一个字符串。它的返回值:文件顺利打开后,指向该流的文件指针就会被返回。如果文件打开失败则返回NULL,并把错误代码存在errno
中
模式字符串
模式字符串 | 意义 |
"r" | 打开一个文本文件,可以读取文件 |
"w" | 打开一个文本文件,可以写入文件,先将文件的长度截为零,如果文件不存在则先创建之 |
"a" | 打开一个文本文件,可以写入文件,向已有文件的尾部追加内容,如果该文件不存在则先创建之 |
"r+" | 打开一个文本文件,可以进行更新,也即可以读取和写入文件 |
"w+" |
打开一个文本文件,可以进行更新,也即可以读取和写入文件,如果该文件存在则首先将其长度截为零
如果不存在则创建之 |
"a+" |
打开一个文本文件,可以进行更新(可读取与写入)向已有文件的尾部追加内容,如果该文件不存在则
创建之,可以读取整个文件,但是写入时只有追加内容 |
"rb","wb","ab",“ab+",
" a+b","wb+","w+b","ab+", "a+b" |
与前面的模式相似,只是使用二进制模式而非文本模式打开文件 |
getc()函数和putc ()函数:
这两个函数与getchar ()和putchar ()差不多,只是一个使用文件获取,一个使用标准输入,输出。
getc():
功 能: 从流中取字符
用 法: int getc(FILE *stream);
getc的调用形式:ch=getc(fp);此处的fp是文件指针;函数功能是从文件指针指向的文件读入一个字符,并把它作为函数值返回给字符型变量ch。如果读取失败则返回NULL.若读到文件尾而无数据时便返回EOF.
putc()函数用于输入一个字符到指定流中,其原型如下:
int putc(int ch, FILE *stream);
【参数】参数ch表示要输入的位置,参数stream为要输入的流。
【返回值】若正确,返回输入的的字符,否则返回EOF。
fclose ()函数
fclose (fp)函数关闭由fp指定的文件,同时根据需要刷新缓冲区。
if (fclose (fp ) != 0) //如果文件成功关闭,fclose ()函数返回值0,否则返回EOF
printf ("Error in closing file %s\n", argv [1]);