指针应用疑点
题:输入一个字符串,内有数字和非数字字符,例如:a123x456 17960? 302tab5876 将其中连续的数字作为一个整数,依次存放到一数组a中。例如,123放在a[0],456放在a[1]......
统计共有多少个整数,并输出这些数。
程序:
[bold]#include<stdio.h>
int main()
{
char str[80];
int *p;
int i=0,j=0,digit=0,ndigit=0,a[20];
printf("please enter a character string:\n");
gets(str);
p=&str[0];
for(i=0;i<80&&*(p+i)!='\0';i++)
{
if(*(p+i)>='0'&&*(p+i)<='9')
{
digit=digit*10+(*(p+i)-'0');
if(*(p+i+1)<'0'||*(p+i+1)>'9'||*(p+i+1)=='\0')
{
a[j]=digit;
digit=0;
ndigit++;
j++;
}
}
}
for(j=0;j<ndigit;j++)
printf(" %d",a[j]);
printf("\n");
return 0;
}[/bold]
问题:能通过编译,但得不到结果,请问出了什么问题,哪些条件缺少?
----------------解决方案--------------------------------------------------------
int *p; 改为 char *p;
----------------解决方案--------------------------------------------------------
编译能通过吗
你定义的变量p是int *,p=&str[0]这两边的类型不匹配吧
----------------解决方案--------------------------------------------------------
把[bold] int[/bold] 改为[bold] char[/bold] 以后行了,谢谢。以后一定注意。
----------------解决方案--------------------------------------------------------