当前位置: 代码迷 >> C语言 >> 由一道题目引开的另外一道题目
  详细解决方案

由一道题目引开的另外一道题目

热度:80   发布时间:2006-03-18 06:33:00.0
由一道题目引开的另外一道题目
在学C语言的时候做拉这样的一个题目:输入一串字符,统计他的空格,字母,数字,特殊符号的个数并且输出。
由这个题目我改拉个字变为:输入一段字符,统计他的空格,字母,数字,特殊符号的个数并且输出。
以下是我原来的代码:(比较简单,就不写注释了,希望大家原谅)
#include <stdio.h>
main()
{ int s=0,n=0,l=o,r=0;
char a;
for(;(a=getchar())=='\n';)
{ if(a==" ") s++;
else
{if(a>=0&&a<=9) n++;
else
{ if((a>"a"&&a<"z")||(a>"A"&&a<"Z")) l++;
else r++;
}
}
}
printf("空格个数为%d 数字个数为%d 字母个数为%d 特殊符号个数为%d"s,n,l,r);
getch();
}
当我输入一段字符的时候问题就出现了:无论怎么样输入他最大就只能接受127个;
下面是我的尝试:是不是a定义为有符的字符,于是,我把a定义为字符数组,结果还是一样;是不是getchar()是一个有符的int型,到网上找了好久都不知道怎么办。
我的疑惑就为什么系统只能输入127个呢??
怎么样才能接受大于127个的呢?<>

----------------解决方案--------------------------------------------------------
好像是DOS的限制
----------------解决方案--------------------------------------------------------
可以自己写一个输入函数,返回一个字符串,不难的
用while语句配合getchar()函数和realloc()函数即可
----------------解决方案--------------------------------------------------------
楼主的程序以输入什么作为结束的条件,我怎么运行老出错啊,是统计错误
----------------解决方案--------------------------------------------------------
不好意思太快了没注意把l=0,打成了l=o


谢谢神的指点,我一会去写个函数,不行,明天早上再来发贴求教各位拉
----------------解决方案--------------------------------------------------------
#include <stdio.h>
main()
{
int s=0,n=0,l=0,r=0;
    char a;
    for(;(a=getchar())!='\n';)
{
  if(a==' ') s++;
  else
  {
   if(a>=0&&a<=9) n++;
   else
   {
    if((a>'a'&&a<'z')||(a>'A'&&a<'Z')) l++;
    else r++;
   }
  }
    }
printf("空格个数为%d 数字个数为%d 字母个数为%d 特殊符号个数为%d",s,n,l,r);
getchar();
return 0;
}

[此贴子已经被作者于2006-3-19 10:47:23编辑过]


----------------解决方案--------------------------------------------------------
现在的问题是怎么把自己写函数加到头文件里面
----------------解决方案--------------------------------------------------------
  相关解决方案