输入一个字符串,内有数字和非数字字符,例如:hi123x46634cat>302hello46xiamen,要求将其中连续的非数字存放到一个指针数组char*str[10]中,例如:”hi”存到str[0],”x”存到str[1]中,”>“存到str[2]中……并输出这些字符串。用指针处理。
一下是我写的,尝试了好几种方法,放弃了,有哪位能帮忙看看
![](https://profile-avatar.csdnimg.cn/c629e49bf53f47eea00029966d015f81_m0_74777334.jpg!4)
将字符串中连续非数字放到指针数组中
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
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无用
悬赏问题
- ¥15 metadata提取的PDF元数据,如何转换为一个Excel
- ¥15 关于arduino编程toCharArray()函数的使用
- ¥100 vc++混合CEF采用CLR方式编译报错
- ¥15 coze 的插件输入飞书多维表格 app_token 后一直显示错误,如何解决?
- ¥15 vite+vue3+plyr播放本地public文件夹下视频无法加载
- ¥15 c#逐行读取txt文本,但是每一行里面数据之间空格数量不同
- ¥50 如何openEuler 22.03上安装配置drbd
- ¥20 ING91680C BLE5.3 芯片怎么实现串口收发数据
- ¥15 无线连接树莓派,无法执行update,如何解决?(相关搜索:软件下载)
- ¥15 Windows11, backspace, enter, space键失灵