【发布时间】:2013-10-06 21:03:25
【问题描述】:
我正在使用从 arg 接收到的字符串来返回另一个带有随机字符的字符串。
int size = strlen(argv[4]);
char* res = malloc(size+1);
然后 res 填充了 argv[4] 的字符,但是当我在控制台中输入 'test' 时,它返回 'Test?' (当我不改组字母而只是逐个字符地复制字符串时)。
为什么会这样?
如果我把 size+100 改为,它可以工作,但我不明白为什么。
【问题讨论】:
-
你是如何复制字符串的?你包括
\0吗? -
确实,我忘了包含 \0,现在已更正,但这不是问题。谢谢!
-
@Sheeft 检查 cmets 并编辑您接受的答案 - 这是错误的,但它可能掩盖了您的实际问题。
-
@NigelHarper 与 +100 最初掩盖问题的方式完全相同。
-
_当我在控制台中输入“测试”时 .... _ 你能显示提供给程序的所有参数吗?你玩 4-th = argv[4]。 argv[1], argv[2], argv[3] 好吗?
标签: c command-line-arguments argv strlen argc