C语言如何将字母与数学分开

3、输入一个以回车结束的字符串(不超过10个字符),将其中的数字字符取出组成一个整数后输出,其余字符组成一个新的字符串输出。例如:输入“5ab3c4d8h2”,则输出整数53482和字符串“abcdh”。 (10分)

你可以创建三个字符数组,比如A、B、C,A读取输入的字符串,然后遍历A,如果是数字就存到B,如果是字母就存到C,最后输出B、C
或者你按照字符读取输入,一次读取一个字符,如果是数字就存B,如果是字母就存C,最后输出B和C


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

/*
3、输入一个以回车结束的字符串(不超过10个字符),
将其中的数字字符取出组成一个整数后输出,
其余字符组成一个新的字符串输出。
例如:输入“5ab3c4d8h2”,则输出整数53482和字符串“abcdh”
*/

int main(){
    char a[10];
    char b[10];
    char c[10];
    int i = 0;
    int j = 0;
    int s = 0;
    while((a[i] = getchar()) != '\n'){
       i++; 
    }
    for (int k = 0; k < strlen(a); k++)
    {
        char bb = a[k];
        if(bb-'0'>=0 && bb-'9'<=0){//bb>='a'&&bb<='z'||bb>='A'&&bb<='Z'
            b[j] = a[k];
            j++;
        }
        else{
            c[s] = a[k];
            s++;
        }
    }
    if(strlen(b)>0){
        printf("%s\n",b);
    }

    if(strlen(c)>0){
        printf("%s\n",c);
    }
}

说一下思路,要把字符串中数字和字母分开,说白了就是处理字符串。
而字符串又是多个字符组成,无非就是对每个字符(字符串从头到尾),做一次判断,如果是数字,就放一边,如果是字符,就放在另一边。(要注意给内存)

而接下来,就是如何判断是字符还是数字(c语言中字符是char类型,一个字节)==》数字在字符串中,其实也是字符得形式,0其实是单个字符'0'
我们判断字符串中一个字符c是数字(c>='0' && c<=‘9’),判断是字母就是(c>='a'&&c<='z' ||(c>=''A)&&c<='Z').

int main()
{    
    const char* str = "ab12yxY6 8";
    char data[10] = { 0 }; //注意一定要满足能存的下,不要数组越界
            //存是字符的数组
    char num[10] = {0}; //存数字字符得数组

    int n = 0, m = 0;
    //其实就是按每个字符取字符串 做判断处理
    for (int i = 0; i < strlen(str); i++)
    {
        //单个字符在计算机底层还是01字符 可以算法比较的  ASSII码表了解一下
        if (str[i] >= '0' && str[i] <= '9')  //判断是数字
        {
            num[n++] = str[i];
        }

        if (str[i] >= 'a' && str[i] <= 'z' || (str[i] >= 'A' && str[i] <= 'Z')) //判断是字符 
        {
            data[m++] = str[i];
        }
    }
    printf("%s \n", data);
    printf("%s \n", num);
    return 0;
}