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