プログラムのシェルが与えられ、いくつかの関数を入力する必要があります。
自動的に作成され、定義する必要のある関数に渡される2つの構造体があります。
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を使うのは初めてなので、これが明らかな場合は許してください。しかし、言語に問題があるため、課題の核心に到達することすらできません。