输入一个字符串,内有数字和非数字字符,例如:A123x456 17960? 302tab5876将其中连续的数字作为一个整数,一次存放到一数组a中,例如,123放在a[0],456放在a[1]…统计共有多少个整数,并输出这些数
-
程序分析:先建立一个字符数组 a[ ],来输入字符串,若 a[ ]中的元素为字符’0’~‘9’,那么就进入循环,循环的目的是将字符存到整型数组中,一个字符一个字符的存放.
-
主要代码为:str[count] = str[count] * 10 + (*p - ‘0’);
-
举个例子:比如字符为:123 ;0=0*10+1; 1=1*10+2;
2=12*10+3;最后得到的是整数123,而不是字符串啦! -
代码如下:
#include<stdio.h>
int main()
{
char a[50]={0};
int str[50]={0};//一定要赋初值,不然后面执行的不是正确结果
int count=0;
printf("input a:");
scanf("%s",a);
char *p=a;
while(*p){
if(*p>='0' && *p<='9'){
while(*p>='0' && *p<='9'){
str[count]=str[count]*10+(*p-'0');
p++;//这步是把字符串123放到整型数组里
}
count++;
}
p++;
}
printf("个数为:%d\n",count);
for(int i=0;i<count;i++){
printf("%d ",str[i]);
}
return 0;
}
-运行结果如下: