c - 将字符与指针用于“单词数组”
问题描述
假设我有一个段落,我想拆分所有单词并将它们放入一个数组中。有什么更好的方法(对于这个例子,让我们假设 100 个单词的长度都在 20 个字符以下):
# character array
char our_array[100][20];
strcpy(our_array[0], "Hello";
strcpy(our_array[1], "Something");
或者:
# string (pointer) array
char *newer_string[100];
newer_string[0] = "Hello";
newer_string[1] = "Something";
为什么一个比另一个更可取?一种在实践中比另一种更常见吗?
解决方案
版本 2 不会一次占用所有内存(如版本 1 那样)。您的字符串的长度也可以是任意的,您不受特定长度的限制(例如 20)。您可能会在版本 2 中获得少量内存开销(由于需要保存的指针),但这只有在至少几乎所有单词都被使用并且几乎所有单词都具有指定长度的情况下才真正成立。
一般来说,我总是推荐版本 2(字符串/字符指针数组)。在这个 1D-Array 中替换字符串比在 2D 版本中更容易。
推荐阅读
- python - 权限通知电子邮件不适用于服务帐户
- amazon-web-services - 如何使用 SAM 调试创建 Cognito PostConfirmation 触发器
- python - Python如何用patch.object修补整个对象
- bash - 如何在 bash 命令中打破 jq 中的长字符串?
- html - 在html页面中水平对齐表格的元素
- cross-domain - XMLHTTPRequest - 不能对响应做任何事情
- html - Material Icons 如何根据元素的内容设置图标?
- python - 如何防止某些特定键在 Python 中“发送”输入
- amazon-web-services - 是否可以将此事件与 AWS EventBridge 模式匹配?
- c# - 获取 GroubBy() 的结果作为列表
- >