【发布时间】:2013-10-24 18:02:40
【问题描述】:
我正在尝试构建一个由两个变量组成的字符串,这些变量被一个空终止符分隔。对于我们正在使用的自定义协议,必须以这种方式完成。
const char* vendorChar = "3333-3333-4444-aaa3-3333";
const char* userChar = "someUsername";
char usernameString[strlen(vendorChar) + strlen(userChar) + 1];
char* uPtr = usernameString;
strcpy(uPtr, vendorChar);
strcpy(uPtr+strlen(vendorChar)+1, userChar);
当我运行上面的代码时,它只发送 vendorChar 的值而忽略 userChar。当它工作时,它应该看起来像
4444-2222-3333-1111\0someUsername
到目前为止,我已经了解到str 函数将删除 null,因为它在字符串末尾看到它。我想我必须使用memcpy 来保存它,但我不知道怎么做。
【问题讨论】:
-
您是否使用调试器来找出 uPtr 的值?那些通常在点击 \0 时停止显示 C 字符串的内容。第二个字符串可能在那里,只是没有显示。
-
空字符停止字符串读取。
-
您的代码在我看来是正确的。你确定它因为其他原因不起作用吗?尝试单步调试并打印
uPtr和uPtr+strlen(vendorChar)+1。 -
您只显示了将字符放入
usernameString的代码。您没有显示“发送”usernameString内容的代码。显示该代码。 -
你的代码不是C,而是Objective-C,
标签: c string concatenation