当前位置: 代码迷 >> C语言 >> [求助]关于指针的问题?
  详细解决方案

[求助]关于指针的问题?

热度:246   发布时间:2006-09-04 20:41:39.0
[求助]关于指针的问题?
题目:输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。
我下面的程序编译没问题,可答案老是不正确,英文字母、空格、数字的个数多一倍,而其它字符的个数在我的电脑上
显示为62,我一直不明白为什么会这样?请高手帮帮忙。顺便说一下,当我不用指针,用s=getchar()就不会有这种问题。
#include "stdio.h"
void main(void)
{char *s;
 int letters=0,space=0,digit=0,others=0;
 printf("please input some characters\n");
gets(s);
 while(*s++!='\n')
 {
 if(*s>='a'&&*s<='z'||*s>='A'&&*s<='Z')
  letters++;
 else if(*s==' ')
  space++;
   else if(*s>='0'&&*s<='9')
       digit++;
     else
       others++;
}
printf("all in all:char=%d space=%d digit=%d others=%d\n",letters,
space,digit,others);
}
搜索更多相关的解决方案: 指针  

----------------解决方案--------------------------------------------------------
以下是引用wchx215在2006-9-4 20:41:39的发言:
题目:输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。
我下面的程序编译没问题,可答案老是不正确,英文字母、空格、数字的个数多一倍,而其它字符的个数在我的电脑上
显示为62,我一直不明白为什么会这样?请高手帮帮忙。顺便说一下,当我不用指针,用s=getchar()就不会有这种问题。
#include "stdio.h"
void main(void)
{char *s;
 int letters=0,space=0,digit=0,others=0;
 printf("please input some characters\n");
gets(s);
 while(*s++!='\n')
 {
 if(*s>='a'&&*s<='z'||*s>='A'&&*s<='Z')
  letters++;
 else if(*s==' ')
  space++;
   else if(*s>='0'&&*s<='9')
       digit++;
     else
       others++;
}
printf("all in all:char=%d space=%d digit=%d others=%d\n",letters,
space,digit,others);
}

指针指向的空间在哪里?


----------------解决方案--------------------------------------------------------
哦!对,指针指向的空间不正确。可是我补上:
char c[50],*s;
s=c;
还是不行。
----------------解决方案--------------------------------------------------------

#include<stdio.h>
#include<string.h>
int dig=0,word=0,space=0,other=0;//全局变量

void jishu(char *str)
{
int i=0;
while(*(str+i)!='\0')
{
if(*(str+i)>='0'&&*(str+i)<='9')
{
dig++;
}
else
if(*(str+i)>='a'&&*(str+i)<='z'||*(str+i)>='A'&&*(str+i)<='Z')
{
word++;
}
else
if(*(str+i)==' ')
{
space++;
}
else
{
other++;
}
i++;
}
}
int main()
{
char str[100];

gets(str);
jishu(str);
printf("字母个数是:%d\n数字个数是:%d\n空格个数是:%d\n其他字符个数是:%d\n",word,dig,space,other);
return(0);
}


----------------解决方案--------------------------------------------------------

#include"stdio.h"
main()
{
char *s,c[50];
int l=0,sp=0,d=0,o=0;
s=c;
printf("please input some characters\n");
gets(s);
while(*s!='\0')
{
if(*s>='a'&&*s<='z'||*s>='A'&&*s<='Z')
l++;
else if(*s==' ')
sp++;
else if(*s>='0'&&*s<='9')
d++;
else
o++;
s++;
}
printf("%-3d%-3d%-3d%-3d\n",l,sp,d,o);
getch();
}

/*这个也可以的*/


----------------解决方案--------------------------------------------------------
谢谢你了,原来问题出现在'\0',不能用'\n'呀!答案就对了!!!
----------------解决方案--------------------------------------------------------
  相关解决方案