/*输入一个字符串,内有数字和非数字字符,例如 A123x456 17960? 302tab5876
将连续的数字作为一个整数,一次存放到一数组a中,
例如123存放在a[0]中,456放在a[1]中……统计共有多少个整数,并输出这些数*/
#include <stdio.h>
#include <string.h>
#include <ctype.h>
int main()
{
char c[100];
int a[10];
int i,j,sum,flag = 0;
printf("请输入字符:\n");
gets(c);
for(i = 0,j = 0;i < strlen(c);i++)
{
if(isdigit(c[i]))
{
sum = sum * 10 + c[i] - 48;
flag = 1;
}
if(!isdigit(c[i]) && flag == 1)
{
a[j] = sum;
sum = 0;
j++;
flag = 0;
}
if(i == strlen(c) - 1 && flag == 1)
{
a[j++] = sum;
sum = 0;
flag = 0;
}
}
printf("共有%d个整数,分别是:\n",j);
for(i = 0;i < j;i++)
{
printf("%d\n",a[i]);
}
}
谭浩强C程序设计(第四版)p292第16题
好多程序还是不够健壮啊,一运行就显示出不健壮了。