史学家 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 abaqus随机生成二维颗粒
  • ¥15 安装ansys许可证管理器时出现了这个问题,如何解决?
  • ¥100 高价求算法,利用智能手机传感器计算车辆的三轴g值
  • ¥15 Blazor server 数据库操作异常,如何解决?(语言-c#)
  • ¥15 uni-app开发APP运行到浏览器访问接口跨域
  • ¥100 mfc消息自创建控件
  • ¥15 网页视频跳过后学习进度未增加
  • ¥15 研究生初试录取系统设计的c++
  • ¥30 通讯录程序设计 通讯录简单设计
  • ¥15 django project说mysqlclient的版本不够高