하..링크드리스트. 제가 실습하고 디버깅 하면서 나오는 주소에러

일단 프로그램은 잘돌아갑니다
알고리즘은
파일을 읽기모드로 열어서
링크드리스트로 연결된 리스트들 출력 (current 포인터,head,tail 더미노드이용 )
리스트 목록 사람들 보여주고
여기서 사람을 추가화기위해 새로입력받은후
텍스트 파일에다가 저장
그리고 다시 이를 꺼내서 링크드리스트를 1 부터 k까지 다시 저장!
근데 여기서 문제가 발생
잘 입력되다가 1 2 3 4
여기서 만약 5 라인이 추가된 라인이면
1 2 3 4 1 이렇게 파일에 저장...
디버깅 해서 주소까지 다따서 확인해본결과
currren -> next 가 가리켜야할 것과 tail preview 가 가리키는 것이 같아야하는데!!!
current -> next의 주소와 테일 프리뷰 주소가 다르고
그리고 next에는 변수 1값이 tail ㅔpreview 에는 5가 정상적으로들어감..
이거 왜이러나요 아래는 코드 입니다\
printf("______________________________________\n");
p = fopen("student.db", "r");
sStr = end(p);// 크기 배정후 주소 넘김
fgets(str, sizeof(str), p); // 목록 입력 사항먼저 출력해주자!
printf(str);
while (fgets(sStr,sizeof(char)*1000,p)!=NULL) {
lInsert(p, &list,sStr); //파일에 들어있는 내용 저장
listPrint(&list);
}
while (list.cur != list.head) {
newnode = list.cur;
list.cur = list.cur->prev;
free(newnode);
}
free(list.head);
free(list.tail);
fclose(p);
이후
이어쓰기 함수가 이어지고 그담으로
링크드를 다시연결해서 출력
p = fopen("student.db", "r");
sStr = end(p);// 크기 배정후 주소 넘김
fgets(str, sizeof(str), p); // 목록 입력 사항먼저 출력해주자!
list.numOfStd=0;
list.cur=NULL;
while (fgets(sStr,sizeof(char)*1000,p)!=NULL) {
lInsert(p, &list,sStr); //파일에 들어있는 내용 저장
listPrint(&list);
}
정말 이상합니다...
고수분들 ... 저를구원해줏세요/..
일단 코드는
일단 코드는
<code> 태그로 감싸서 이렇게 올려 주시고
lInsert와 listPrint 함수는 어디 있나요?
해결 했습니다.... tag롤 감싸서 올리는게 어떤거죠...??
리스트는 역시 그림그려가면 서해야대내요... 해결했습니다. ㅜ.ㅜ.ㅜ 4시간만에 ㅜㅠㅜ
원인은 1234 12345 이렇게 노드가생성되네요... 그러니 마지막에 1을가리키지 하 ㅜㅜㅜ
댓글 달기