我正在创建一个需要结构的程序。我已经编写了整个程序,但是从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/

10-12 23:36