これは私の問題です。学校向けにこのプログラムを作成する必要があり、最後の1時間をデバッグやグーグルで過ごしましたが、答えが見つかりませんでした。構造体の配列を参照して呼び出す
私は私のmain
における構造体の配列を持っていると私は、この関数では、私は、ファイルから読み込む文字列が分割されているので(参照による呼び出しによって)私の機能seteverythingup
にその配列を与えたい、と私は書きたいですそれは構造体に入れますが、struct配列のstrcpyの場合は、常に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