有问题请教,
怎样用C编写函数将一个字符串中所有单词摘出来到一个新的二维数组中(字符串中有数字和字母)例如aaa111aa11a1变换之后是三个字符串aaa,aa,a
如何将字符串中所有单词摘出来到一个新的二维数组中
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
1条回答 默认 最新
- chenxizhan1995 2019-11-13 00:46关注
/* 给定一行文本,拆分成单词。 主要用到三个 string.h 中的库函数 1. strncpy(s, ct, n); 把字符从 cn 复制到 s 中,最多复制 n 个字符; 2. strpbrk(cs, ct) 在字符串 cs 中搜索任何属于 ct 的字符,并返回第一个位置指针,搜索不到则返回 NULL 3. strspn(cs, ct) 返回cs中由 ct 里的字符构成的子字符串的长度 */ #include <stdio.h> #include <string.h> #define N 100 // 要拆分的字符串 char buf[N] = "aaa111aa11a1"; // 设置单词包含的字符 const char letters[] = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"; char res[N][N]; // 保存结果 int main() { if (buf == NULL){ printf("空指针\n"); return 1; } printf("原字符串是:%s:\n", buf); char *p=buf; // p 定位尚未搜索的字符 int len = 0; // 辅助搜索 int word_cnt = 0; // 有多少个单词 // 搜索 while (p=strpbrk(p, letters)){ len = strspn(p, letters); strncpy(res[word_cnt++], p, len); // res 是全局变量,默认初始化为全零。所以复制后不用补尾零。 p+=len; } // 输出结果 if (word_cnt > 0){ printf("拆分出 %d 个单词: ", word_cnt); for (int i = 0; i<word_cnt; i++){ printf("%s, ", res[i]); } printf("\n"); }else{ printf("没有发现单词\n"); } return 0; }
解决 无用评论 打赏 举报
悬赏问题
- ¥15 虚拟机打包apk出现错误
- ¥30 最小化遗憾贪心算法上界
- ¥15 用visual studi code完成html页面
- ¥15 聚类分析或者python进行数据分析
- ¥15 逻辑谓词和消解原理的运用
- ¥15 三菱伺服电机按启动按钮有使能但不动作
- ¥15 js,页面2返回页面1时定位进入的设备
- ¥50 导入文件到网吧的电脑并且在重启之后不会被恢复
- ¥15 (希望可以解决问题)ma和mb文件无法正常打开,打开后是空白,但是有正常内存占用,但可以在打开Maya应用程序后打开场景ma和mb格式。
- ¥20 ML307A在使用AT命令连接EMQX平台的MQTT时被拒绝