Хорошо, так что я уверен, что это не слишком сложный вопрос, но я потерян, пытаясь разобраться в этом так долго, так что вот код, сначала декларация для моих структур.
struct GraphicElement {
char* fileName;
struct GraphicElement* pNext;
};
struct RasterGraphic {
struct GraphicElement* GraphicElements;
};
ЗатемЯ вызываю функцию, которая заботится о инициализации, которая, по моему мнению, работает правильно.
int main(void)
{
char response;
BOOL RUNNING = TRUE;
struct RasterGraphic RG;
_CrtSetDbgFlag(_CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF);
InitRasterGraphic(&RG);
Функция инициализации выглядит следующим образом
void InitRasterGraphic(struct RasterGraphic* pA)
{
pA->GraphicElements = malloc(sizeof(struct GraphicElement));
if (pA->GraphicElements == NULL) return;
//pA->GraphicElements = 0;
//pA->GraphicElements->pNext = NULL;
//pA->GraphicElements->fileName = NULL;
pA->GraphicElements->fileName = (char*)malloc(sizeof(char));
return;
}
Так что следующая часть кода - это где яЯ собираюсь задать свой вопрос.У меня есть функция, которая принимает пользовательский ввод какой-то строки.Я хотел бы взять этот вход и добавить его к следующему элементу.Поэтому каждый раз, когда пользователь вызывает функцию, которую он вводит в свой ввод, она добавляется к следующему элементу.Мой код сейчас беспорядок, и я знаю, что он, вероятно, далеко, я уже пробовал кучу вещей.Я считаю, что мне нужно использовать realloc.То, что я не могу обернуть здесь, это то, как взять ввод и добавить его, чтобы позже я мог распечатать все элементы по порядку.так, например, пользователь вызывает функцию 3 раза и вводит в нее «привет» «мир».Позже я хотел бы перебрать и распечатать графическое изображение 1 "привет", графическое изображение 2 - это "мир"
void InsertGraphicElement(struct RasterGraphic* pA)
{
char response[256];
printf("Insert a GraphicElement in the RasterGraphic\nPlease enter the GraphicElement filename: ");
scanf("%s", &response[0]);
pA->GraphicElements->fileName = realloc(pA->GraphicElements, 256*sizeof(char));
pA->GraphicElements++;
strcpy(pA->GraphicElements->fileName, &response);
if (pA->GraphicElements == 1){
printf("\nThis is the first GraphicElement in the list\n");
}
return;
}