用记事本建立文件src.dat,其中存放若干字符。编写程序,从文件src.dat中读取数据,统计其中的大写字母、小写字母、数字、其它字符的个数,并将这些数据写入到文件test.dat中。
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main()
{
FILE*fp1,*fp2;
char ch;
int da=0,xiao=0,shuzi=0,qita=0;
if((fp1=fopen("src.dat.txt","r"))==NULL)//先打开文件后进行判断
//虽然题目要求用记事本建立文件src.dat,但执行时以最后的后缀为准
//所以必须加上.txt,代表执行的是TXT文件
//文件建立可在桌面新建一个文件夹,在里面 新建-文本文档-重命名
{
printf("File open error!
");
exit(0);
}
while(!feof(fp1))//feof(fp)检测fp指向的文件是否到了末尾,到末尾返回1,!表示非
//由于while(n)表示n!=0时执行循环,所以循环成立条件为fp未到末尾
{
ch=fgetc(fp1);//读取文件src.dac中的字符
//fgetc和getc最大的区别在前者是函数,后者是宏
//其中fget前面的字母f即为function函数的意思
//格式为ch=fgetc(fp)
if(ch>='A'&&ch<='Z')
{
da++;
}
if(ch>='a'&&ch<='z')
{
xiao++;
}
if(ch>='0'&&ch<='9')
{
shuzi++;
}
else
{
qita++;
}
}//字符全部读取并计算各字符数量
//读取后把数据写入test.dat中
if(fclose(fp1))
{
printf("Can not close the file!
");
exit(0);
}
if((fp2=fopen("test.dat.txt","w"))==NULL)
{
printf("File open error!
");
exit(0);
}
fprintf(fp2,"大写%d个
小写%d个
数字%d个
其他%d个
",da,xiao,shuzi,qita);
if(fclose(fp2))
{
printf("Can not close the file!
");
exit(0);
}
printf("操作成功");//观察是否运行成功,不然感觉空荡荡的很奇怪
}