【发布时间】:2015-09-16 01:12:08
【问题描述】:
我有一个具有以下 typedef 的结构。
typedef struct {
short cmdLength;
char cmdRequest[126];
} cmdRequest_t;
然后我在主程序中有以下代码。
char *command = "d tcpip\0";
printf("command: %s\n", command);
size_t cmdLen = strlen(command);
printf("size: %zu\n", cmdLen);
cmdRequest_t cmdRequest = {(short) cmdLen, *command};
printf("size: %hi\n", cmdRequest.cmdLength);
printf("command: %s\n", cmdRequest.cmdRequest);
但是,我的输出如下。
command: d tcpip
size: 7
size: 7
command: d
大小仍然正确,但由于某种原因命令被截断为一个字母。知道为什么会这样吗?
【问题讨论】:
-
#define COMMAND "d tcpip"然后使用COMMAND而不是*command -
@BLUEPIXY:这很难看,OP 可能正在动态获取字符串...
-
@Alex 字符串文字不需要显式的 NULL (
\0) 终止符 - 如果您不这样做,它们会正确地以空值终止。