드래그 앤 드롭으로
즐겨찾기 아이콘 위치 수정이 가능합니다.
게시물ID : programmer_10681짧은주소 복사하기
작성자 : Jawbone★
추천 : 0
조회수 : 469회
댓글수 : 5개
등록시간 : 2015/06/01 17:13:18
C에서 연결구조 문제 풀고 있는데 코드는 아래와 같습니다.
struct class* head = NULL;
struct class* tail = NULL;
struct class{
int year;
char* name;
struct class* next;
};
void addnode(int year, char* name)
{
struct class* temp = (struct class*)malloc(struct class));
temp->year = year;
temp->name=name;
if(head==0)
head = tail = temp;
else
{
tail->next=temp;
tail = temp;
}
}
void main(void)
{
char name[10];
int year;
.....
.....(생략)
scanf("%s" , name);
scanf("%d", &year);
addnode(year, name);
}
예를 들어 노드를 2개 생성했다면 첫번째 노드에 들어있는 name 값이 두번째 노드 값과 동일하게 변경됩니다. 하지만 이상하게도 year 값은 변하지 않습니다. 노드를 3개 만들어도 마지막에 들어가는 노드의 char 값으로 다른 앞의 노드 char값이 다 변경됩니다.
다시 말해 첫번째에 영수, 12, 두번째에 영희, 14라면 영수(첫번째 노드)가 영희로 바뀌고 12는 그대로 입니다.
이 버그를 어떻게 하면 고칠 수 있을까요?
댓글 분란 또는 분쟁 때문에
전체 댓글이 블라인드 처리되었습니다.
새로운 댓글이 없습니다.