在将数组中的值赋给对象成员时出现问题 这是我的代码
这是分段错误,但我不明白为什么 我无法从编译中获得任何消息 该程序只会崩溃 感谢
FILE * openRead(char fName[]);
int setArray(FILE *fp, struct salesPerson* sRec[]);
#define EMPLOYEES 8
int main(){
FILE *fp=openRead("sales.dat");
struct salesPerson *instance[EMPLOYEES];
setArray(fp,instance);
return 0;
}
FILE * openRead(char fName[]){ //READS
FILE *fp;
fp=fopen(fName,"r");
if ((fp != NULL)){
// printf("return succ");
return fp;
}else{
return 0;
}
}
int setArray(FILE *fp, struct salesPerson* sRec[]){
int i,num[30],lpay[30];
char fname[30][30];
char lname[30][30];
double amount[30];
for (i=0;i<=EMPLOYEES;i++){
//while (!feof(fp)){
if(fscanf(fp,"%d:%[^:]:%[^:]:%d:%lf",&num[i],lname[i],fname[i],&lpay[i],&amount[i]) != EOF){
strcpy(sRec[i]->lastName,lname[i]);
//strcpy(sRec[i]->firstName,fname);
//sRec[i]->salesLevel=*lpay;
//sRec[i]->salesAmount=amount;
//printf("%s",sRec[i]->lastName);
//if(fscanf(fp,"%d:%[^:]:%[^:]:%d :%f",&num,fname,lname,&payl,&amount) != EOF){
printf("%s \n",fname[i]);
}
}
return i;
}
答案 0 :(得分:2)
你的指针并没有指向有效的地方。
struct salesPerson *instance[EMPLOYEES];
setArray(fp,instance);
instance[0]
(以及所有其他指针)指向哪里?
答案 1 :(得分:1)
在向它写东西之前,你需要为你的指针分配内存。喜欢
instance[0] = malloc(sizeof(struct salesPerson));
答案 2 :(得分:0)
for (i=0;i<EMPLOYEES;i++){// "<=" should be "<"
if(fscanf(fp,"%d:%[^:]:%[^:]:%d:%lf",&num[i],lname[i],fname[i],&lpay[i],&amount[i]) != EOF){
sRec[i] = malloc(sizeof(struct salesPerson));//allocate structure
strcpy(sRec[i]->lastName,lname[i]);
//set to member of sRec ...
} else
break;
}