- 时间限制: 1 Sec 内存限制: 128 MB
题目描述
请将文本文件info.dic下载保存到当前目录下, 要求编写C程序,统计info.dic的大写字母、小写字母、数字的个数。
样例输入
例如,info.dic的内容(结尾有换行): On July 20, 1969, Armstrong became the first
man to walk on the moon.
样例输出
对应的输出结果为:
upper:3
lower:44
digit:6
提交如下
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
FILE *fp;
char ch;
int u=0,l=0,d=0;
int i;
if((fp=fopen("info.dic","r"))==NULL){
exit(0);
}
while((ch=fgetc(fp))!=EOF){
if(ch>='0'&&ch<='9')
d++;
else if(ch<='z'&&ch>='a')
l++;
else if(ch>='A'&&ch<='Z')
u++;
}
printf("upper:%d\n",u);
printf("lower:%d\n",l);
printf("digit:%d\n",d);
fclose(fp);
}
提示:
1.定义一个指向文件型数据的指针变量:
FILE *fp;
定义fp是一个指向FILE类型数据的指针变量。
通过文件指针变量能够找到与它关联的文件。
2.*[HTML]:用fopen函数打开数据文件
调用方式:
fopen(文件名,使用文件方式);
3.使用文件方式
文件使用方式 | 含义 | 如果指定的文件不存在 |
---|---|---|
r(只读) | 为了输入数据,打开一个已存在的文本文件 | 出错 |
w(只写) | 为了输入数据,打开一个文本文件 | 建立新文件 |
a(追加) | 向文本文件尾添加数据 | 出错 |
rb(只读) | 为了输入数据,打开一个二进制文件 | 出错 |
wb(只写) | 为了输出数据,打开一个二进制文件 | 建立新文件 |
4.用fclose函数关闭数据文件
一般形式:
fclose(文件指针)
5.常用下面的方法打开一个文件:
if((fp=fopen("file","r"))==NULL){
printf("can't open this file\n");
exit(0);
}
exit 是标准C的库函数,作用是是程序终止,用此函数时在程序的开头应包含stdlib.h头文件。
1.在文件的所有有效字符后有一个文件尾标志。
文件尾标志用标识符EOF(end of file)表示,EOF在stdio.h头文件中被定义为-1。
2. 用feof函数可以检测文件尾标志是否已被读取过。
如果文件尾标志已被读出,则表示文件已结束,此时feof函数值为真(用1表示),否则用0表示
本文章于2021年6月23日发布,笔者是一位C语言的业余爱好者,如有错误,欢迎指正!
【举一反三】
【题目描述】
请将文本文件wq.dic下载保存到d:\ ,注:d:\是.c源程序保存的位置 。
要求编写C程序,统计wq.dic的大写字母、小写字母、数字以及其他字符的个数。
【输入】
例如,wq.dic的内容(结尾有换行): On July 20, 1969, Armstrong became the first
man to walk on the moon.
【输出】
对应的输出结果为:
upper:3
lower:44
digit:6
other:17
【Solution】
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
FILE *fp;
char ch;
int u=0,l=0,d=0,o=0;
if((fp=fopen("info.dic","r"))== NULL)
{
exit(0);
}
while((ch=fgetc(fp))!= EOF)
{
if(ch>='0'&&ch<='9')d++;
else if(ch<='z'&&ch>='a')l++;
else if(ch>='A'&&ch<='Z')u++;
else o++;
}
printf("upper:%d\n",u);
printf("lower:%d\n",l);
printf("digit:%d\n",d);
printf("other:%d\n",o);
fclose(fp);
}