这一章没有怎么仔细看,其实也很简单,记住格式就行了。等不会的时候可以翻书看一下就OK了。
到此为止,谭浩强的这本书已经看完一遍了,找到了10个左右的错误,感觉有点惊讶。后天C语言的圣经就买回来了,到时候再认真看看那本吧(评价极高啊~圣经Orz)!
一.
C语言的标准I/O库中定义了3个FILE型指针:stdin(标准输入文件)、stdout(标准输出文件)和stderr(标准错误文件),他们可被任何程序使用,称为标准文件(standard file)指针,简称标准文件。通常标准文件指针都隐含指向控制台(终端设备),即在终端上进行输入/输出。
二.
1.读打开(r):只能读已经存在的文件,不能写
2.写生成(w):可建立一个新文件写入数据。若文件已经存在,将覆盖已有数据。
3.追加(a):向已有文件末尾写入数据或建立新文件。
4.读/写打开(r+):读或写已经存在的文件
5.读/写生成(w+):读或写新文件
6.读/写追加(a+):可读取或添加数据,或建立新文件。
三.写一个字符到磁盘文件
#include<stdio.h>
#include<stdlib.h>
int main()
{
FILE *fp;
int ch;
if((fp = fopen("G:\\test.txt", "w")) == NULL)
{
printf("error!\n");
exit(1);
}
while((ch = getchar()) != '\n')
fputc(ch, fp);
fclose(fp);
return 0;
}
文件路径为G:\\test.txt,应该是一个\,但是C语言需要转义,所以2个\\。
fputc函数也有返回值。如果执行此函数成功,就返回被输出的字符,否则就返回EOF(EOF是一个符号常量,在stdio.h头文件中被定义为-1)
四.统计文件中的单词个数
#include<stdio.h>
#include<stdlib.h>
int main(int argc, char *argv[])
{
FILE *fp;
char ch;
int white = 1;
int count = 0;
if((fp = fopen(argv[1], "r")) == NULL) (argv[0]是文件名~~~1开始才是数据)
{
printf("can't open file %s.", argv[1]);
exit(1);
}
while((ch = fgetc(fp)) != EOF)
if(ch == ' ' || ch == '\t' || ch == '\n')
white++;
else
if(white)
{
white = 0;
count++;
}
fclose(fp);
printf("文件中有 %d 个单词", count);
return 0;
}