[英]C - strcpy appears to be concatenating successive values stored in a struct
自从我使用C并在代码中发现一些问题以来已经有一段时间了。 我有这样的结构:
struct packet
{
char seq[4];
char type[4];
char src[10];
char dst[10];
char payload[MAX_BUF_LEN]; //predefined buffer length constant
}
然后,当接收到由空格分隔的字符串时,我想将这些“字段”中的每一个复制到相应的struct packet
变量中。 这是我所拥有的:
strcpy(temp_buf, buf);
field=strtok(temp_buf, " ");
temp_buf
示例字符串:“ 1发送8273940124 9472849351你好”
strcpy(inet_packet.seq, field);
field=strtok(NULL, " ");
strcpy(inet_packet.type, field);
field=strtok(NULL, " ");
strcpy(inet_packet.src, field);
field=strtok(NULL, " ");
strcpy(inet_packet.dst, field);
field=strtok(NULL, "\n");
printf("field: %s\n", field); //Shows field="hello"
strcpy(inet_packet.payload, field);
但是,在上面的示例输入中, inet_packet.type
= send82739501249472849351hello So; 它似乎是将每个连续的副本串联成类型? 尝试了几种不同的方法,但仍然无法获得预期的输出。
C字符串必须为NUL终止。 因此,您的声明char type[4]
不足以容纳send
字符串而不会溢出。
更改此声明char type[5]
并确保你不把一个字符串长度超过4个字符在那里。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.