繁体   English   中英

C-strcpy似乎是连接存储在结构中的连续值

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM