簡體   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