我在动态分配和结构方面遇到了问题。任务:我有一个学生结构,看起来像这样:
typedef struct{
unsigned id;
char *lastName;
float grade;
}students_t;
我不允许向lastName传递最大字符数,它必须保持一个指针,我每次都会增加其大小。
我的代码如下:
unsigned counter = 0;
students_t* students = NULL;
students_t temp;
//
char char_current;
unsigned char_counter=0;
//
while(fscanf(inputFile,"%u",&temp.id) == 1){
students = realloc(students,(counter+1) * sizeof(students_t));
students[counter].id=temp.id;
printf("%d",students[counter].id);
students[counter].lastName = NULL;
while(fscanf(inputFile,"%c",&char_current) != ' '){
students[counter].lastName = realloc(students[counter].lastName,(char_counter+1) * sizeof(char));
students[counter].lastName[char_counter] = char_current;
char_counter++;
}
students[counter].lastName[char_counter] = '\0';
fscanf(inputFile,"%f",&students[counter].grade);
counter++;
}
我的问题是从一开始就使用了de fscanf(因为程序进入了无限循环),但是我不知道如何实际修复它。
如果有人可以帮助我解决问题,我将非常感激。谢谢!
您有几个问题:
[请稍等一下,我将提供一种替代方法(在我有机会对其进行测试之前,我不想发布任何代码)。