关于数字字符转换的问题,如何解决?

1.数字字符转换:输入一个以回车结束的字符串(少于 80 个字符),将其中第一次出现的连续的数字字符('0'~'9')转换为整数,遇到非数字字符则停止。例如,将字符串“x+y=35+z+9”转换为整数是 35。改写test07_6.cpp,在main主函数中采用gets或scanf函数(%s格式)输入一行文字,数字字符转换功能在自定义函数void convert(char str[],int *dp)中完成,转换后的整数在main主函数中输出
提示:函数声明如下void convert(char str[],int *dp), 转换后的数字变量的地址保存在形参dp中。
include<stdio.h>
int main(void)
{
int i, number;
char str[80];

printf("Enter a string: ");  
i = 0;
while((str[i] = getchar( )) != "\n"){ 
    i++; 
}

i = 0;
while(i < 80){
    if(str[i] < '0' || str[i] > '9'){
         break;
    }
    i++;
}

number = 0;
while(str[i] != '\0'){
if(str[i] >= '0' && str[i] <= '9'){
number = number * 10 + str[i] - '0';
break;
}
i++;
}
printf("number = %d\n", number);

return 0;

}

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

void convert(char str[],int *dp)
{
    int i = 0;
    for(i = 0; i < strlen(str); i++)
    {
        if(str[i] >= '0' && str[i] <= '9')
        {
            int num = str[i] - '0';
            *dp = *dp * 10 + num;
        } 
        else if(*dp != 0)
        {
            break;
        }
    }
}
int main()
{
    printf("Input String:");
    char str[80] = {'\0'};
    scanf("%s", str);
    int num = 0;
    convert(str, &num);
    printf("%d", num);
}

img


#include <stdio.h>

void convert(char str[],int *dp)
{
    int i,isnum=0;
    *dp = 0;

    for(i=0; str[i]; i++)
    {
        if(str[i] >= '0' && str[i] <= '9')
        {
            *dp = *dp * 10 + str[i] - '0';
            isnum++;
            continue;
        }

        if(isnum>1)
            return;
        else
            *dp = isnum = 0;
    }

    if(isnum<=1)
        *dp = 0;
}

int main(void)
{
    int number;
    char str[80];
    printf("Enter a string: \n");
    gets(str);

    convert(str,&number);

    printf("number = %d\n", number);

    return 0;
}