我面临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;
如果我不使用结构数组,它似乎运行得很好。我到底在这里想念什么?
我猜你忘了删除
员工empF;
当您从一名雇员切换到许多雇员时,请输入一行。该声明将覆盖先前的数组声明。
(而且,您实际上并不需要temp
名员工;您可以直接扫描到empF[i]
,但可能有您的原因:))]
您在函数中重新定义了变量名称empF
,并以employee
(非数组)类型声明。
void test(){
FILE* fp;
employee empF; /* <-- here */
/* ... */
}
因此,当您引用empF
时,您引用的是函数内部的非数组局部变量。