Почему я получаю произвольное число, когда пытаюсь напечатать мою (скопированную) строку? - PullRequest
0 голосов
/ 12 февраля 2019

У меня есть такая структура:

struct car{
    char name[9];
};

И у меня есть этот массив:

char list_of_names[10][9] = {"toyota", "b", "c", "d", "e", "f", "g", "h", "i", "j"};

Как видите, я набрал только первый элемент;Остальные пока заполнены.Я пытаюсь скопировать первый элемент (toyota) в мою переменную имени машины struct car.Вот что я попробовал:

//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)  

1 Ответ

0 голосов
/ 12 февраля 2019

Ваша строка формата: "printing!%d\n" заставляет printf() ожидать целое число (%d) вместо строки (%s).Это твоя ошибка.Печатается только усеченная часть указателя на первый элемент строки в виде целого числа со знаком.

...