ĐỌC STRUCT TỪ FILE NHỊ PHÂN VÀO DANH SÁCH LIÊN KẾT
Dưới đây là hàm em viết dùng để lấy thông tin của struct DocGia trong file để truyền vào Linked List nhưng không hiểu sao nó lại bị lỗi. Em dùng 2 phép thử phía dưới thì không hiểu sao ở trong vòng while thì l.pTail trỏ đến NULL còn ra khỏi vòng while là nó lại không trỏ tới NULL nữa(chắc là trỏ tới chính nó). Mọi người giải thích em với ạ.
#include "stdafx.h"
#include "FileToLinkedList.h"
#pragma warning(disable:4996)
void initial(ListDocGia &l)
{
l.pHead = l.pTail = NULL;
}
DocGia* getDG(DocGia DG)
{
DocGia* pDG = new DocGia;
pDG = &DG;
pDG->pDGNext = NULL;
return pDG;
}
void AddTail(ListDocGia &l, DocGia* pDG)
{
if (l.pHead == NULL)
l.pHead = l.pTail = pDG;
else
{
l.pTail->pDGNext = pDG;;
l.pTail = pDG;
l.pTail->pDGNext = NULL;
}
}
ListDocGia GetFromFile()
{
ListDocGia l;
initial(l);
FILE* fp;
fp = fopen("DocGia\\DanhSachDocGia.bin", "rb");
if (fp != NULL)
{
DocGia DG;
while (fread(&DG, sizeof(DG), 1, fp)!=NULL)
{
DocGia* pDG = getDG(DG);
printf("\n%s", pDG->HoTen);
AddTail(l, pDG);
//Thử
if (l.pTail->pDGNext == NULL)
printf("\nDung roi");
else
printf("\nSai roi!");
}
//Thử
if (l.pTail->pDGNext == NULL)
printf("\nDung roi");
else
printf("\nSai roi!");
for ( DocGia* p = l.pHead; p != NULL; p = p->pDGNext)
printf("\n%s", p->HoTen);
}
fclose(fp);
return l;
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?