对文件的输入/输出学习是C语言中的一块重要内容,因为当你的程序变得复杂时,难免要处理一些文件,涉及到文件的读取和写入。C语言提供了强大的文件输入/输出功能,其标准I/O包中包含了很多专用的函数,可以很方便地读取和写入文件,我将在下面介绍几种常用的文件I/O函数,并最后给出一个模拟压缩文件的例子。
在介绍函数之前,首先要说明C语言处理输入和输出,是采用“流“的形式,而且常常会有缓冲区,缓冲区的存在可以提高输入/输出处理的高效性,举个简答的例子,如果没有缓冲,下面这个代码的执行效果会很尴尬!
while((ch=getchar())!='\n')
putchar(ch);
putchar('\n');
当你输入“abc[回车的时候]”,屏幕显示的是"aabbcc",因为没有缓冲的存在,一输入马上得到输出。那么如何理解文件流的形式,可以这么理解,字符的输入就像注入一段水流,这些调用函数就在岸边去抽取自己想要的输入,然后显示,我以一个常见的小错误代码来说明
char ch;
int num1, num2;
while((ch=getchar())!='\n'){
putchar(ch);
scanf("%d%d", &num1, &num2);
printf("%d %d", num1, num2);
}
putchar('\n');
当你输入“a 42 24[回车]”的时候,这段字符序列“a【空格】42【空格】24【回车】”就向水流一样流进缓冲区,其中a被ch=getchar()捕获,然后进入循环,由于scanf()自动跳过空白字符,所以捕获两个整型量42和24,遇到【回车】会刷新缓冲区,所以屏幕输出“a42 24”,然后就结束循环了,因为[回车]被ch=getchar()捕获,不满足循环条件,跳出循环。
所以大家在分析输入输出的时候也可以照着这种方法去分析,其实良好的输入输出功能是一个是需要程序员很细心的去处理,涉及到很多细节。
接下来,介绍三个标准文件:stdin,stdout,stderr。可以将这3个文件理解成C语言自带的用于处理键盘输入,屏幕显示,标准错误的立即显示。stdin表示标准输入,通常指键盘输入,stdout表示标准输出,