从显示错误的文件到指针数组的输入

问题描述 投票:0回答:1

我面临empF[i]的错误“下标的值不是数组,指针或向量”这是我的代码

employee empF[100];
int i=0;
void test(){
    FILE *fp;
    employee empF;
    fp=fopen("employee.csv","r");
    employee temp;
    char x[100];
    while(fgets(x,100,fp)!=NULL){
        removeCommas(x);
        sscanf(x,"%d %s %ld %s %d",&(temp.employee_id),temp.employee_name,&(temp.phno),temp.shift,&(temp.area_code));
        empF[i].employee_id=temp.employee_id;
        empF[i].employee_name=temp.employee_name;
        empF[i].phno=temp.phno;
        empF[i].shift=temp.shift;
        empF[i].area_code=temp.area_code;
        i+=1;
    }
    fclose(fp);
}

这里是员工结构

typedef struct employee
{
    int employee_id;
    char employee_name[20];
    long int  phno;
    char shift[10];
    int area_code;
}employee;

如果我不使用结构数组,它似乎运行得很好。我到底在这里想念什么?

c file csv runtime-error structure
1个回答
0
投票

我猜你忘了删除

员工empF;

当您从一名雇员切换到许多雇员时,请输入一行。该声明将覆盖先前的数组声明。

(而且,您实际上并不需要temp名员工;您可以直接扫描到empF[i],但可能有您的原因:))]


0
投票

您在函数中重新定义了变量名称empF,并以employee(非数组)类型声明。

void test(){
    FILE* fp;
    employee empF; /* <-- here */
    /* ... */
}

因此,当您引用empF时,您引用的是函数内部的非数组局部变量。

© www.soinside.com 2019 - 2024. All rights reserved.