史学家 2022-11-12 17:48 采纳率: 100%
浏览 12
已结题

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

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

img

img

  • 写回答

2条回答 默认 最新

  • Husband Chen 2022-11-13 16:26
    关注

    考察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,等你老师给答案了记得发一个过去。😀

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 11月22日
  • 已采纳回答 11月14日
  • 创建了问题 11月12日

悬赏问题

  • ¥15 基于卷积神经网络的声纹识别
  • ¥15 Python中的request,如何使用ssr节点,通过代理requests网页。本人在泰国,需要用大陆ip才能玩网页游戏,合法合规。
  • ¥100 为什么这个恒流源电路不能恒流?
  • ¥15 有偿求跨组件数据流路径图
  • ¥15 写一个方法checkPerson,入参实体类Person,出参布尔值
  • ¥15 我想咨询一下路面纹理三维点云数据处理的一些问题,上传的坐标文件里是怎么对无序点进行编号的,以及xy坐标在处理的时候是进行整体模型分片处理的吗
  • ¥15 CSAPPattacklab
  • ¥15 一直显示正在等待HID—ISP
  • ¥15 Python turtle 画图
  • ¥15 stm32开发clion时遇到的编译问题