我正在创建一个需要结构的程序。我已经编写了整个程序,但是从txt文件加载时出现问题。我的支柱是
typedef struct{
int empid;
char *name;
}employee;
我目前的读入方法是
employee emparray[100];
int employees = 0;
FILE * employinfpt;
employinfpt = fopen("emps.txt", "r");
char line[100];
int tempint = 0;
char string[500];
while (fgets(line, sizeof(line), employinfpt)) {
//sscanf
sscanf(line, "%d %s", &tempint, string);
emparray[employees].empid = tempint;
emparray[employees].name = string;
//increase employees
employees++;
}
fclose(employinfpt);
我的问题是,当我尝试访问struct数组时,它们都具有与最后一个字符串相同的值。我有点菜鸟,我不知道我要去哪里错了。有人有什么建议吗?
最佳答案
它们都指向同一个数组。
尝试
emparray[employees].name = strdup(string);
然后,当它起作用时,请阅读有关动态内存分配的信息,以了解您在这里所做的事情。
关于c - 从文件问题的C编程结构,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22106813/