30/09/2018, 20:41

Lỗi C4700: uninitialized local variable 'p' used ai giúp mình với

#include "stdafx.h"
#include "conio.h"
#include "iostream"
#include "stdio.h"


struct SinhVien
{
	char strMSSV[9];
	char strHoTen[30];
	char strNamSinh[5];
	float fDiemTrungBinh;
};

struct SinhVienNode
{
	SinhVien info;
	SinhVienNode * pNext;
};

struct List
{
	SinhVienNode * pHead;
	SinhVienNode * pTail;
};

void XuatDanhSach(SinhVienNode * p);
void init(List & L);
SinhVienNode * getNode(char MSSV[9], char HoTen[30], char NamSinh[5], float DiemTrungBinh);
void addFirst(List & l, SinhVienNode * p);
void addTail(List & l, SinhVienNode * p);
SinhVienNode * insertHead (List & l, char MSSV[9], char HoTen[30], char NamSinh[5], float DiemTrungBinh);
SinhVienNode * insertTail (List & l, char MSSV[9], char HoTen[30], char NamSinh[5], float DiemTrungBinh);
void addAfter(List & l, SinhVienNode * q, SinhVienNode *p);

void main()
{
	List lop18TH01;
	int a, b;
	init(lop18TH01);
	do
	{
	printf("Nhap so luong sinh vien muon them: ");
	scanf_s("%d", &a);
	}
	while (a < 1);
printf("
");

SinhVienNode * p;
	char strMSSV[9];
	char strHoTen[30];
	char strNamSinh[5];
	float fDiemTrungBinh;
	for (int i=1; i<=a; i++)
	{
		printf("Sinh vien thu %d:", i);
		printf("Nhap vao MSSV: ");
		scanf_s("%s", &p->info.strMSSV);
		printf("Nhap vao ho va ten: ");
		scanf_s("%s", &p->info.strHoTen);
		printf("Nhap vao nam sinh: ");
		scanf_s("%s", &p->info.strNamSinh);
		printf("Nhap vao diem trung binh: ");
		scanf_s("%f", &p->info.fDiemTrungBinh);
		p = getNode(strMSSV, strHoTen, strNamSinh, fDiemTrungBinh);
		addTail(lop18TH01, p);
	}
/*
	_getch();
	system("cls");
	do
	{
		printf("1 	
");
		printf("2 	
");
		printf("3 	
");
		printf("4 	
");
		printf("5 	
");
		printf("0 	
");
		printf("Chon: ");
		scanf_s("%d", &b);
		system("cls");
		switch (b)
		{
			case 1:
				break;
			case 2:
				_getch(); break;
			case 3:
				_getch(); break;
			case 4:
				_getch(); break;
			case 5:
				_getch(); break;
		};
		system("cls");
	}
	while (a != 0);
*/
	_getch();
}

void XuatDanhSach(SinhVienNode * p)
{
	printf("%s - %s - %s - %.1f
", p->info.strMSSV, p->info.strHoTen, p->info.strNamSinh, p->info.fDiemTrungBinh);
}

void init(List & l)
{
	l.pHead = l.pTail = NULL;
}

SinhVienNode * getNode(char MSSV[9], char HoTen[30], char NamSinh[5], float DiemTrungBinh)
{	
	SinhVienNode * p = new SinhVienNode;
	if (p == NULL)
		return NULL;
	strcpy_s (p->info.strMSSV, MSSV);
	strcpy_s (p->info.strHoTen, HoTen);
	strcpy_s (p->info.strNamSinh, NamSinh);
	p->info.fDiemTrungBinh = DiemTrungBinh;
	p->pNext = NULL;
	return p;
}

void addFirst(List & l, SinhVienNode * p)
{
	if (l.pHead == NULL)
		l.pHead = l.pTail = p;
	else{
		p->pNext = l.pHead;
		l.pHead = p;
	}
}


void addTail(List & l, SinhVienNode * p)
{
	if (l.pHead == NULL)
		l.pHead = l.pTail = p;
	else
	{
		l.pTail->pNext = p;
		l.pTail = p;
	}
}

SinhVienNode* insertHead(List & l, char MSSV[9], char HoTen[30], char NamSinh[5], float DiemTrungBinh)
{
	SinhVienNode * p = getNode (MSSV, HoTen, NamSinh, DiemTrungBinh);
	if (p != NULL)
	{
		addFirst (l, p);
		return p;
	}
	return NULL;
}

SinhVienNode * insertTail (List & l, char MSSV[9], char HoTen[30], char NamSinh[5], float DiemTrungBinh)
{
	SinhVienNode * p = getNode (MSSV, HoTen, NamSinh, DiemTrungBinh);
	if (p != NULL)
	{	
		addTail (l, p);
		return p;
	}
	return p;
}
	
void addAfter(List & l, SinhVienNode * q, SinhVienNode *p)
{
	if (q != NULL)
	{	
		p->pNext = q->pNext;
		q->pNext = p;
	}
	if (q = l.pTail)
		l.pTail = p;
	addFirst(l, p);
}
Ngô Doãn Tuấn viết 22:53 ngày 30/09/2018

Biến p (đoán là kiểu con trỏ ) của bạn đã được sử dụng trước đó.
Bạn debug chương trình rồi chỉ vị trí lỗi mọi người mới giúp được bạn chứ nhỉ ?

Nguyễn Đức Anh viết 22:56 ngày 30/09/2018

Mình thử Debug nhưng không chạy được luôn. Vừa ấn là nó báo lỗi ngay

Chế Vũ Gia Hy viết 22:52 ngày 30/09/2018

Gán p = NULL là được rồi bạn, lỗi này xảy ra khi bạn không khởi tạo gía trị của biến mà pass by value. Nhưng tốt nhất là nên khởi tạo gía trị trong mọi trường hợp.

Nguyễn Đức Anh viết 22:54 ngày 30/09/2018

Mình gán NULL cho p xong rồi chạy thì vẫn còn lỗi khác là uninitialized local variable ‘fDiemTrungBinh’ used. Sửa sao cho hết đây bạn?

Chế Vũ Gia Hy viết 22:53 ngày 30/09/2018

thì tiếp tục gán cho nó fDiemTrungBinh = 0 chẳng hạn

Nguyễn Đức Anh viết 22:45 ngày 30/09/2018

Ô. Chạy được rồi. Hay quá. Cảm ơn bạn nhiều nhiều

Bài liên quan
0