我已经使用了C并且在代码中发现了一些问题,这已经有一段时间了。我有一个结构作为这样的:C - strcpy似乎连接了存储在结构中的连续值
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 所以;它似乎将每个连续的副本连接成类型?已经尝试了几种不同的东西,但仍然没有得到预期的结果。
为了方便他人帮助你,请撰写并发布http://www.sscce.org/ – pts 2014-11-21 00:14:15
你写道,你已经尝试了几个不同的东西。请发布您尝试过的所有内容(包括完整的源代码),收到的输出以及为什么它对您不利。 – pts 2014-11-21 00:14:56
我不确定这是否与您遇到的问题有关,但我注意到,您的三个结构成员(type,src和dest)不够大,无法包含您提供的字符串和null终止。 – doppelheathen 2014-11-21 00:19:26