c语言,字符串的输入输出问题

用函数输入一串字符串比如786fhjv654gnvrf123gh要求输出786 654 123,这个该怎么写啊

逐个字符遍历,遇到数字字符就计算整数

#include <stdio.h>
int main()
{  
    char s[100];
    gets(s);
    int n=0,flag = 0,i=0;
    while(s[i] != '\0')
    {
        if(s[i] >='0' && s[i]<='9')
        {
            n = n*10 + s[i] - '0';
            flag = 1;
        }
        else
        {
            if(flag == 1)
            {
                printf("%d ",n);
                flag = 0;
            }
            n = 0;
        }
        i++;
    }
    if(flag == 1)
        printf("%d",n);
}

回答如下,记得采纳一下哦!可以使用循环遍历字符串,判断每个字符是否为数字,如果是则将其保存到一个临时字符串中,直到遇到第一个非数字的字符,然后将临时字符串中的数字输出,并清空临时字符串,继续遍历字符串,直到字符串末尾

#include <stdio.h>
#include <ctype.h>

void extractNumbers(const char* str) {
    char tmp[100] = {0};
    int i = 0;
    while (str[i] != '\0') {
        if (isdigit(str[i])) {
            tmp[strlen(tmp)] = str[i];
        } else if (strlen(tmp) > 0) {
            printf("%s ", tmp);
            memset(tmp, 0, sizeof(tmp));
        }
        i++;
    }
    if (strlen(tmp) > 0) {
        printf("%s", tmp);
    }
}

int main() {
    char str[] = "786fhjv654gnvrf123gh";
    extractNumbers(str);
    return 0;
}

当然,也可用ascill码判断是否是数字,然后将其保存到数组,遇到非数字,数组保存一个空格。最后输出数组内容。