统计输入序列中的单词个数、行数、字符数

self education 专栏收录该内容
5 篇文章 0 订阅

随机输入一串序列,直到#,统计其中的单词个数、行数、字符数;

代码如下 :

/************************************
统计输入内容中的字符数、行数、单词数
cal_component()
*************************************/
void cal_component()
{
const char STOP = '#'; //退出标志
char ch,i,buffer; //输入字符,数组下标,中间量
char AlphaFlag[2];
int words,characters,lines,inword; //单词数、字符数、行数、单词标志位


words = characters = inword =0; //初始化单词数、字符数、行数、单词标志位
lines = 0; //初始化行数
for(i = 0 ; i < 2 ; i++) AlphaFlag[i] = 0; //初始化数组,否则可能导致单词数判断错误,即存在当前数组内的值可能为一字母
i = 0; //初始化计数


while((ch = getchar()) != STOP)
{
if(ch != '\n') //避免存入换行符
AlphaFlag[i++] = ch; //将当前的输入值缓存到AlphaFlag[1]中,用以后续的比较
if(i >1 ) //循环赋值,用以存储当前输入值和上一输入值
{
i = 0;
}


if(isalpha(ch)) //判断单词字母数
{
inword = 1;
characters ++;
}
else inword = 0; //判断其他字符数,换行符应排除在外
if(inword == 0 && isalpha(AlphaFlag[i]))
//判断单词数,每个字母结束后下一字符为非字母记为一个单词
{
words ++;
}
if(ch == '\n' ) //判断行数
lines ++;
}
printf("There are %d lines, %d words and %d characters\n",lines,words,characters);
}

  • 0
    点赞
  • 0
    评论
  • 0
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值