回 帖 发 新 帖 刷新版面

主题:数组和字符串问题

各位大哥哥,大姐姐,小妹初学C语言,遇到了一个难题。
请大家赐教。

s指向一个含有数字字符的字符串,
将连续的数字序列转换为一个整数,将转换后生成的整数依次存到整形数组中。

编写函数:int re(char *s,int a[]),函数返回值为数组中整数的个数。

例如,输入"23456123242432"
数组a是(234,56,12324),函数返回值为4

回复列表 (共1个回复)

沙发


#include<stdio.h>
#include<math.h>
int re(char *s,int a[])
{
    int n=0,sum=0;
    char *p,*p1;
    while(*s!='\0')
    {   
        
        if(*s>='0'&&*s<='9')
        {
            p=s; 
            s++;
            while(*s>='0'&&*s<='9'&&s-p<5)
                s++;           
            p1=s-1;
            while(p<=p1)
            {
                sum+=(*p-48)*pow(10,p1-p);//用字符减去48(0的ASC码)得相应整数
                ++p;
            }
             a[n]=sum;
             n++;
             sum=0;           
        }
        else s++;
        
    }

    return n;
}
            
         
main()
{
        char ch[30];
        int a[15],number,i=0;    
        gets(ch); 
        number=re(ch,a);
        printf("the total is %d\n",number);
        if(number>0)
        {
            printf("including :");
            for(i=0;i<number;i++)
                printf("%d ",a[i]);
        }
                
}





我来回复

您尚未登录,请登录后再回复。点此登录或注册