从键盘输人一段文本,将该文本写人磁盘文件disk. txt中,并统计该文本文件中字母、数字、空白和其他字符的个数,要求将统计结果显示在屏幕上,同时将统计结果写人磁盘文件total. txt中。
可以在一个循环中使用getchar()来获取一段文本,然后一边计算各种字符的个数,一边写入文件disk.txt中;输入回车后,就结束输入,然后在屏幕上打印统计结果,再把统计结果写入文件total.txt中即可,下面是一个实现,供参考:
参考链接:
C语言中文件打开模式(r/w/a/r+/w+/a+/rb/wb/ab/rb+/wb+/ab+)浅析_哆啦@熊的博客-CSDN博客_c语言rb+
对C标准中空白字符(空格、回车符(\r)、换行符(\n)、水平制表符(\t)、垂直制表符(\v)、换页符(\f))的理解_baoleilei6的博客-CSDN博客_\n是空格符嘛
#include <stdio.h>
#include <ctype.h>
int main(void){
//https://blog.csdn.net/jobfind/article/details/89191265
FILE * fp = fopen("disk.txt","w"); //以写模式打开或创建文件disk.txt
if(fp==NULL){
printf("打开或创建文件失败!\n");
return 0;
}
char ch; //用于临时存储输入的每个字符
int letter=0; //字母字符的个数
int number=0; //数字字符的个数
int space=0; //空白字符的个数
int other=0; //其他字符的个数
printf("请输入一段文本,以回车结束:\n") ;
while((ch=getchar())!='\n'){
fprintf(fp,"%c",ch);
if((ch>='A'&&ch<='Z')||(ch>='a'&&ch<='z')){ //判断是否字母字符
letter++;
}else if(ch>='0'&&ch<='9'){// 判断是否为数字字符
number++;
}else if(isspace(ch)){ // 判断是否为空白字符 https://blog.csdn.net/qq_34629352/article/details/106046402
space++;
}else{ //其他字符
other++;
}
}
fclose(fp);
//在屏幕显示统计结果
printf("字母个数:%d\n",letter);
printf("数字个数:%d\n",number);
printf("空格个数:%d\n",space);
printf("其他字符个数:%d\n",other);
fp = fopen("total.txt","w"); //以写模式打开或创建文件total.txt
if(fp==NULL){
printf("打开或创建文件失败!\n");
return 0;
}
//把统计结果写入文件
fprintf(fp,"字母个数:%d\n",letter);
fprintf(fp,"数字个数:%d\n",number);
fprintf(fp,"空格个数:%d\n",space);
fprintf(fp,"其他字符个数:%d\n",other);
fclose(fp);
return 0;
}