c语言字符串类型问题

如何通过空格把要输入的这些分开丢进函数呀 afd0d1cd2vda3cd43fd !zdcdvdacd a2b0d1c3d4v5d6a7c8d9 3$2456#7

编写一个函数int conv(char arr[])实现以下功能:在传入的字符串中提取所有数字字符('0'……'9'), 将其按先后顺序组装成一个整数作为函数的返回值,如果没有数字字符则返回0,arr[]中保存的是待提取的字符串。

然后在主函数中调用conv函数,将用户输入的字符串组装成整数返回。

注意:若不实现并调用conv函数,本题不得分。

输入格式:
第一行输入一个正整数n,然后在第二行中输入n个不超过20个字符的字符串(字符串中数字字符的个数为0到10个之间)。

字符串之间用空格间隔。

输出格式:
输出每个字符串中可以组装的整数,整数间以两个空格间隔。

输入样例:
4
afd0d1cd2vda3cd43fd !zdcdvdacd a2b0d1c3d4v5d6a7c8d9 3$2456#7


#include <stdio.h>
#include <ctype.h>  // 用于使用 isdigit 函数

int conv(char arr[])
{
    int result = 0;

    // 扫描字符串中的每一个字符
    for (int i = 0; arr[i] != '\0'; i++)
    {
        // 如果当前字符是数字字符,则将其加到结果中
        if (isdigit(arr[i]))
        {
            result = result * 10 + (arr[i] - '0');
        }
    }

    return result;
}

int main()
{
    int n,m;
    scanf("%d", &n);
    for (int i = 0; i < n; i++)
    {
        char arr[20];
        scanf("%s", arr);
        m=conv(arr);
        printf("%d  ", m);
    }
    return 0;
}
#include <stdio.h>

// 定义函数conv,用于提取字符串中的数字字符并组装成整数
int conv(char arr[])
{
    // 定义一个变量num用于保存组装的整数
    int num = 0;

    // 遍历字符数组arr
    for (int i = 0; arr[i] != '\0'; i++)
    {
        // 如果当前字符是数字字符
        if (arr[i] >= '0' && arr[i] <= '9')
        {
            // 将当前数字字符转换成整数,并将其加到num中
            num = num * 10 + arr[i] - '0';
        }
    }

    // 返回组装的整数
    return num;
}

int main()
{
    // 定义一个变量n表示有n个字符串
    int n;
    scanf("%d", &n);

    // 循环读入n个字符串
    for (int i = 0; i < n; i++)
    {
        // 定义一个字符数组arr用于保存输入的字符串
        char arr[21];
        scanf("%s", arr);

        // 调用函数conv,将字符数组arr中的数字字符组装成整数并输出
        printf("%d  ", conv(arr));
    }

    return 0;
}

望采纳。