Я обнаружил, что мой массив структур перезаписывается при сканировании строки в буфер, я, вероятно, каким-то образом разделяю ту же память, но не могу понять, как это исправить.
Глобальное объявление структуры и массива структур
struct Node {
int number;
char *string;
};
struct Node nodes[50] = {{ 0 }};
... некоторые операции с узлами в массиве ...
вставкаfunction
void insert(char *string, int number)
{
nodes[lastIndex].number = number;
nodes[lastIndex].string = string;
Теперь я сканирую строку в бафф
char buff[20]
while (scanf("%s", buff) > 0)
{
if (!strcmp(buff, "print"))
printf("%s", printhighest());
else
{
scanf("%s %d", buff, &number);
insert(buff, number)
}
}
Каждый раз, когда применяется первое условие, строка char * в массиве структуры получаетперезаписывается строкой «print» на каждом элементе массива.
Он изменяется сразу после запуска цикла while после scanf("%s", buff)
Так что, когда я хочу напечатать, он выглядит примерно так:
узел [0] - число (10) - строка («печать»)
узел [1] - число (25) - строка («печать»)
и так далее ...
И, кстати, я не могу изменить цикл while.
Спасибо за помощь.