我得到了一个程序的外壳,并且必须填写一些功能。
我有两个自动创建并传递给我必须定义的函数的结构。
typedef struct {
char data[20];
} msg;
typedef struct {
int seqnum;
int acknum;
int checksum;
char payload[20];
} pkt;
假设我必须定义这个函数foo
并这样创建它:
void foo(msg message) {
printf("%s\n", message.data);
}
当调用该函数时,它会打印出ddddddddddddddddddddôÑ@<úHn½*Ìå«*¤ú¤F«*
. 除非我错了,它不应该只能容纳20个字符吗?我实际上并没有创建msg
.
如果我复制msg.data
到pkt.payload
.
void foo(msg message) {
pkt packet;
strncpy(packet.payload, message.data, sizeof(packet.payload));
printf("%s\n", message.data);
printf("%s\n", packet.payload);
}
message.data 的打印结果与以前相同,但 packet.payload 的打印结果相同eeeeeeeeeeeeeeeeeeee<úeeeeeeeeeeeeeeeeeeee²+!@<úHn½*Ìå«*¤ú¤F«*
。为什么超过20个字符?
这是我第一次使用 C,如果这很明显,请原谅我,但我什至无法触及作业的核心,因为我在语言方面遇到了问题。