我有这个结构:
struct car{
char name[9];
};
我有这个数组:
char list_of_names[10][9] = {"toyota", "b", "c", "d", "e", "f", "g", "h", "i", "j"};
如您所见,我只输入了第一个元素。其余的现在填充。我正在尝试将第一个元素(丰田)复制到我的结构车“名称”变量中。这是我尝试过的:
//Initialize struct variable
struct car c;
memcpy(c.name, list_of_names[0], 9);
我也尝试过使用strcmp,但是每次尝试进行操作时,我在c.name中获得的输出始终是一些随机数。我什至尝试取消引用指针,例如:
memcpy(c.name, *(list_of_names[0]), 9);
但无济于事;错误是相同的。有什么建议么?谢谢!
修改
这是我所做的测试/打印操作:
struct car c;
memcpy(c.name, list_of_names[0], 9);
printf("printing!%d\n", c.name);
输出:
-13423455 (gibberish)
答案 0 :(得分:4)
您的格式字符串:"printing!%d\n"
使printf()
期望使用整数(%d
)而不是字符串(%s
)。那是你的错误。打印的是指向字符串中第一个元素的指针的截断部分,为有符号整数。