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);
}
Bài liên quan
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ỉ ?
Mình thử Debug nhưng không chạy được luôn. Vừa ấn là nó báo lỗi ngay
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.
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?
thì tiếp tục gán cho nó
fDiemTrungBinh = 0
chẳng hạnÔ. Chạy được rồi. Hay quá. Cảm ơn bạn nhiều nhiều