01/10/2018, 15:55
Đọc struct từ file vào linked list
ĐỌ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("
%s", pDG->HoTen);
AddTail(l, pDG);
//Thử
if (l.pTail->pDGNext == NULL)
printf("
Dung roi");
else
printf("
Sai roi!");
}
//Thử
if (l.pTail->pDGNext == NULL)
printf("
Dung roi");
else
printf("
Sai roi!");
for ( DocGia* p = l.pHead; p != NULL; p = p->pDGNext)
printf("
%s", p->HoTen);
}
fclose(fp);
return l;
Bài liên quan