2014-12-08 18 views
0

的結構是我的代碼掃描從數組對象成員 這裏賦值時有問題

它是分割的錯誤,但我不能明白爲什麼 我不能從任何味精編譯 程序只崩潰 感謝

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; 
} 

回答

1

您需要爲您的指針分配內存寫作前it.Like

instance[0] = malloc(sizeof(struct salesPerson)); 
2

你的指針並不指向任何有效的地方。

struct salesPerson *instance[EMPLOYEES]; 
setArray(fp,instance); 

instance[0](和所有其他指針)指向哪裏?

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; 
}