내 코드는 작동하지만 제 질문은이 동적 할당이 올바른지 여부입니다. 그것은 잘 작동하고 모두 괜찮지 만 그것이 옳다는 것을 확신하지는 않습니다.이 재 할당 방법이 정확합니까?
StudentDynamic* pStudents = NULL;
char auxfirstName[255], auxlastName[255];
float auxGrade;
FILE* pFile = fopen("InitialDB.txt", "r");
if (pFile == NULL)
{
printf("Could not open file or is empty! Exiting...");
exit(2);
}
int i = 0;
pStudents = (StudentDynamic*)malloc(sizeof(StudentDynamic) * 1);
while (!feof(pFile))
{
fscanf(pFile, "%s", auxfirstName);
pStudents[i].firstName = (char*)malloc(strlen(auxfirstName) + 1);
strcpy(pStudents[i].firstName, auxfirstName);
fscanf(pFile, "%s", auxlastName);
pStudents[i].lastName = (char*)malloc(strlen(auxlastName) + 1);
strcpy(pStudents[i].lastName, auxlastName);
fscanf(pFile, "%f", &auxGrade);
pStudents[i].grade = auxGrade;
i++;
pStudents = (StudentDynamic*)realloc(pStudents, sizeof(StudentDynamic) * (i + 1));
}
nStudents = i;
fclose(pFile);
[C에서 malloc() 및 패밀리의 반환 값을 캐스팅하지 않는 이유에 대한 설명을 참조하십시오.] (https://stackoverflow.com/q/605845/2173917) –
[이유 "while (! feof (file))"항상 잘못 되었나요?] (https://stackoverflow.com/q/5431941/2173917) –
왜 malloc + strcpy 대신에'strdup'를 사용하지 않으시겠습니까? –