将字符串中连续非数字放到指针数组中

输入一个字符串,内有数字和非数字字符,例如:hi123x46634cat>302hello46xiamen,要求将其中连续的非数字存放到一个指针数组char*str[10]中,例如:”hi”存到str[0],”x”存到str[1]中,”>“存到str[2]中……并输出这些字符串。用指针处理。
一下是我写的,尝试了好几种方法,放弃了,有哪位能帮忙看看

img

img

考察ASCII的使用,'0' 对应 48(0x30) 至 ’9‘ 对应57(0x39)。
不用数组的时候

#include <stdio.h>

int main() {
    char content[100]; 
    int i, j;
    int count; // 统计数字和空格
    int row;
    char str[10][10]={0}; // 带初始化
    char const *p = content;
    char e;
    puts("输入一行内容");
    scanf("%[^\n]%*c", content);
    
    j = row = count = 0;
    for (i = 0; *(p + i) != 0; i++) {
        e = *(p + i);
        // 如果是数字或者空格,跳过
        if (e > 47 && e < 0x3A || e == 0x20) {
            count++; // 每个间隔里的长度
            j = 0;
            continue;
        }
        
        if (count > 0) {
            row++;
            count = 0; // 下一次重新算
        }
        *(str[row]+j) = e;
        j++;
    }
    
    putchar(10);
    for (i = 0; i < 10 && str[i][0]!=0; i++)
        printf("%s\n", str[i]);
    
    return 0;
}

先把程序走通,再考虑优化。用指针处理可能繁琐些,比如把现在的结果一个一个赋值过去。
没想到什么方法,问题同 https://tieba.baidu.com/p/8135904411,等你老师给答案了记得发一个过去。😀

img

img