我有一个结构如下
struct employeeData
{
int EMP_ID;
char name[20];
int dept;
int rank;
int salary;
struct employeeData *next;
};
我创建了一个函数
void initializeList(struct employeeData *List)
我试图从
格式的文件中读取信息12 Bob 2 1 65000
13 Sally 5 3 30000
我目前正在尝试
void initializeList(struct employeeData *List)
{
FILE *ifp;
ifp = fopen("empInfo.txt","r");
while (ifp != 0)
{
fscanf(ifp, " %d %s %d %d %d ", &List->EMP_ID, &List->name, &List->dept, &List->rank, &List->salary);
List->next;
}
fclose(ifp);
}
这必须是一个链接列表,我知道在某处需要Malloc但是我被卡住了。
任何帮助将不胜感激
答案 0 :(得分:0)
typedef struct employeeData {
int EMP_ID;
char name[20];
int dept;
int rank;
int salary;
struct employeeData *next;
}EMP;
EMP *new_EMP(void){
EMP *node = calloc(1, sizeof(EMP));
if(!node){
fprintf(stderr, "failed to create an employee.\n");
exit(EXIT_FAILURE);
}
return node;
}
EMP *readf_EMP(FILE *fp){
EMP emp = { .next = NULL };
if(5==fscanf(fp, "%d %19s %d %d %d", &emp.EMP_ID, emp.name, &emp.dept, &emp.rank, &emp.salary)){
EMP *node = new_EMP();
*node = emp;
return node;
}
return NULL;
}
EMP *initializeList(void){
FILE *ifp;
ifp = fopen("empInfo.txt","r");
EMP *np, *head=NULL, *curr;
while (np = readf_EMP(ifp)){
if(!head)
head = curr = np;
else
curr = curr->next = np;
}
fclose(ifp);
return head;
}