这个c语言程序该怎么写?

编写函数stoi(char str[ ]),实现如下功能:从字符串str(字符串中不超过10个数字符号)中提取数字符号,并形成对应的整数。编写主程序,测试stoi函数的功能并在主程序中输出结果。例如字符串为:a1b2c3,则得到整数123。

一个简单实现:



#include <stdio.h>
#include <string.h>
int stoi(char str[]){
    
    int i;
    int num=0;
    int k=1;
    int temp[10];
    int j=0;
    
    //把字符串里面的数存放到一个int数组 
    for(i=0;i<strlen(str);i++){
        if(str[i]>='0'&&str[i]<='9'){
            temp[j]=k*(str[i]-'0');
            j++;
        }
    }
    
    //从这个数组拼接出一个整数 
    for(i=0;i<j;i++){
        num+=temp[j-i-1]*k;
        k*=10;
    }
    
    return num;
}

int main(void){
    
    char str[20];

    gets(str);  //获取一个字符串 
    printf("%d\n",stoi(str));  //打印转换结果 

    
    return 0;
}
#include <stdio.h>
#include <ctype.h>

int stoi(char s[])
{
    int r = 0;
    while (*s)
    {
        if (isdigit(*s))
            r = r * 10 + *s - '0';
        s++;
    }
    return r;
}

int main()
{
    char s[128];
    scanf("%s", s);
    printf("%d", stoi(s));
    return 0;
}

img

#include <string.h>
#include <stdio.h>

int stoi(char t[])
{
    int s[10];
    int j,k,h=0;
    int len=strlen(t);
    
    for( j=0; j< len; j++)
    {
        if('0'<=t[j]&&t[j]<='9')
        {
            s[h]=t[j]-48;h++;
        }
    }
    int sum=0;
    int wei=1;
    for( k=h-1; k>=0; k--)
    {
        sum+=wei*s[k];
        wei=wei*10;
    }
    int digit=sum;
    return digit;
}

int main()
{
    puts("请输入字符串:");
    char t[10];
    gets(t);
    printf("%d",stoi(t));
    return 0;
}