读书人

小程序、编译通过但为什么一运行就出

发布时间: 2012-03-29 12:53:12 作者: rapoo

小程序、编译通过,但为什么一运行就出错啊
#include <stdio.h>
#include <stdlib.h>

void Digif(char *s);

int main(void)
{
char *s;
puts("enter a string...");
gets(s);

Digif(s);

system("PAUSE");
return 0;
}

void Digif(char *s)
{
int n=0;
while(s!=NULL)
{

if( *s++>='0'&&*s++<='9')
{
n++;
}
printf("%d digi founded\n",n);

}
}


[解决办法]
改正(1)char *s;处应改为:
char *s;
s=(char *)malloc(1000);
原因:指针没分配空间
改正(2)if( *s++>='0'&&*s++<='9')处应改为:
if( *s>='0'&&*s<='9')
  {
s++;
  n++;
  }
原因:*s++指的是指针指向的内容加1,而不是指针向后移1位;
&&前后都有*s++,会使*s加2,而不是加1.

读书人网 >C语言

热点推荐