這是我的問題:我必須爲學校製作此程序,並且我花了最後一個小時進行調試和搜索,並且沒有找到答案。使用引用參考的結構數組
我在我的main
中有一個結構數組,我想給我的函數seteverythingup
(通過引用調用)給出該數組,因爲在此函數中我從文件中讀取的字符串被拆分,並且我想寫它進入結構,但當strcpy與struct數組時,我總是得到一個SIGSEV
錯誤。
這是我的主:
int main(int argc, char *argv[])
{
FILE* datei;
int size = 10;
int used = 0;
char line[1000];
struct raeume *arr = (raeume *) malloc(size * sizeof(raeume*));
if(arr == NULL){
return 0;
}
if(argc < 2){
return 0;
}
datei = fopen(argv[1], "rt");
if(datei == NULL){
return 0;
}
fgets(line,sizeof(line),datei);
while(fgets(line,sizeof(line),datei)){
int l = strlen(line);
if(line[l-1] == '\n'){
line[l-1] = '\0';
}
seteverythingup(&line,arr,size,&used);
}
ausgabeunsortiert(arr,size);
fclose(datei);
return 0;
}
,這是我的函數:
void seteverythingup(char line[],struct raeume *arr[], int size,int used)
{
char *token,raumnummer[5],klasse[6];
int tische = 0;
const char c[2] = ";";
int i=0;
token = strtok(line, c);
strcpy(raumnummer,token);
while(token != NULL)
{
token = strtok(NULL, c);
if(i==0){
strcpy(klasse,token);
}else if(i==1){
sscanf(token,"%d",&tische);
}
i++;
}
managesize(&arr[size],&size,used);
strcpy(arr[used]->number,raumnummer);
strcpy(arr[used]->klasse,klasse);
arr[used]->tische = tische;
used++;
}
從技術上講,C沒有引用調用,只能按值調用。通過使用指向變量的指針,可以*通過引用來模擬*調用。 –
至於你的問題,如果你的代碼不會導致編譯器給你錯誤或警告,你需要啓用更多的警告。 –
您分配了一個指針數組,但指針指向的內容沒有空間。 – stark