1、程序引入:
#include<stdio.h>
#include<stdlib.h>
int main(int argc, char *argv[])
{
int ch;
FILE *fp; //指向文件的指针
long count = 0;
//检查argc的值,查看是否有命令行参数
//如果没有,程序打印一条用法提示后退出。
//字符串argv[0]是该程序的名称。
//exit()函数关闭所有打开的文件并终止程序。
//exit()函数的参数会被传递给一些操作系统。
//通常的约定正常终止的程序传递值为0,非正常终止的程序传递非0值。
//不同退出值用来标识导致程序失败的原因
if(argc != 2)
{
printf("Usage: %s filename\n", argv[0]);
exit(1);
}
if((fp = fopen(argv[1], "r")) == NULL)
{
printf("Can't open %s\n", argv[1]);
exit(1);
}
while((ch = getc(fp)) != EOF)
{
putc(ch, stdout); //相当于putchar(ch);
count++;
}
fclose(fp);
printf("File %s has %ld characters\n", argv[1], count);
return 0;
}
部分解释已在注释中说明。
1、fopen()函数:打开文件。
头文件:#include<stdio.h>
参数:第一个参数是要打开的文件名,更确切地说,是【包含该文件名的字符串地址】。
第二个参数用于指定【文件打开模式】的一个字符串。如:"r","w","a","r+","w+","a+"等
注意:①如果使用任何一种"w"模式打开一个已有的文件,文件内容将被删除,以便程序以一个空文件开始执行操作;如果该文件不存在则先创建之。
②“a”的意义是打开一个文本文件,可以写入文件,向已有文件的尾部追加内容,如果该文件不存在则创建之。
③"rb","wb","ab","rb+","wb+","ab+"的意义与上述一样,只是使用二进制模式打开文件。上文中提到的均为文本模式。
程序成功打开一个文件后,fopen()返回一个【文件指针(指向FILE的指针:FILE是stdio.h中定义的一种派生类型)】(fp),其他I/O函数用这个指针来指定该文件。
文件指针fp并【不指向实际的文件】,而是【指向一个关于文件信息的数据包】,其中包括文件I/O使用的【缓冲区信息(缓冲区的位置,缓冲区的当前缓冲能力以及使用的文件)】。
如果不能打开文件,fopen()函数返回空指针NULL,程序将退出。
2、fclose()函数:关闭由文件指针指定的文件,同时根据需要刷新缓冲区。
如果文件关闭成功,fclose返回0,否则返回EOF。