c언어 큐 연결리스트 문자열이 덮어 쓰여지는 문제
typedef struct TABLE
{
char** data;
int prise;
struct TABLE* link;
}T;
T* getNode();
void OrderMenu(T** front, T** rear,char* data,int prise);
void DoneMenu(T** front, T** rear);
void ShowOrder(T** front);
void Result();
void menu();
int main()
{
menu();
return 0;
}
T* getNode()
{
T* node = (T*)malloc(sizeof(T));
if (node != NULL)
{
node->link = NULL;
}
return node;
}
void OrderMenu(T** front, T** rear, char* data, int prise)
{
if (!*front)
{
*front = *rear = getNode();
printf("최초 메뉴 등록\n");
}
else
{
*rear = (*rear)->link = getNode();
printf("메뉴 추가 완료\n");
}
(*rear)->data = (char**)malloc(sizeof(char*));
if ((*rear)->data != NULL)
{
*(*rear)->data = data;
(*rear)->prise = prise;
}
return;
}
menu함수에서 data와 prise값을 입력받아 enqueue를 두번 하면
prise값은 입력한대로 잘 나오는데
첫번째 data값이 두번째에 입력한 data값으로 덮어쓰여집니다...
동적할당 문제인 것 같긴한데... 해결법을 도저히 모르겠어서 여쭙니다....
해결법
해결법
1. 왜 안되는지 입력값, 출력값, 라인따라 하나씩 논리적으로 따라가보세요.
2. GDB같은 디버거는 1번을 할 수 있도록 도와줍니다.
---------------
Happy Hacking!
OrderMenu()를 호출하는 쪽의 코드가 안 나와
OrderMenu()를 호출하는 쪽의 코드가 안 나와 있지만, 아마도 매번 동일한 버퍼의 주소를 넘겨주고 있겠지요.
좋은 하루 되세요!
댓글 달기