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
0