【C语言】文本文件中的字符类别与个数

  • 时间限制: 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);
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值