用C语言实现一个简单的字符串问题。请给我一个尽可能简化的程序!十分感谢!问题如下

输入一个字符串,内有数字和非数字字符,如
A123x456 17966@fd4567
将其中连续的数字作为一个整数,依次存放在一个数组a中,例如123存到a[0],456存到a[1]。统计共存了多少整数,并输出这些数。

#include<stdio.h>

#include<string.h>

#include<stdlib.h>

#define MAXSIZE 100   /*如果位数不够就要动态分配内存了*/

int main()

{

    char * str = "A123x456 17966@fd4567...";

    int size ,i,j=0;

    char ch[MAXSIZE],temp[MAXSIZE] ;

 for(i=0;i<MAXSIZE;i++)

 {

  ch[i] = ' ';

  temp[i] = ' ';

 }

    size = strlen(str);        /*可以在这用if(size>MXASIZE)判定,执行动态分配realloc(temp,size)*/

    strcpy(temp,str);

    for(i=0;i<=size;i++)

    {

 

        ch[j] = temp[i];     

        if(ch[j] >='0'&&ch[j]<='9')

                j++;       

        else

        {

                j =0;

    if(0 != atoi(ch))                /*在stdlib.h中 将字符串转换成整数*/

     printf("%d\t",atoi(ch));

 

        }

    }

    return 0;

}

 

 希望对你有帮助!

 

温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-09-25
提取整型的代码
#include <stdio.h>
#include <ctype.h>
int main()
{
char s[] = "123x456 17966@fd4567", *p = s;
int x, n;

while(*p)
{
if(isdigit(*p))
{
sscanf(p, "%d%n", &x, &n); //用来提取整型
printf("%d\n", x);
}
else sscanf(p, "%*[^0-9]%n", &n); //用来跳过非整型字符
p += n; //p后移
}
}本回答被提问者和网友采纳
第2个回答  2012-09-25
你可以用asc码或者是直接比较,然后比较到字母就终止一次 然后存入数组 然后继续比较 例如i j两个记录点都在A 然后ij同时yi'do移动到1 然后j向后移动到x a[0]存123 然后i移动到j 以此类推
第3个回答  2012-09-25
对字符串的每一个字符依次检查就行了,这个问题太简单了。懒得写追问

简单的问题也有更好的办法、