私はmallocを使用してmainで作成された3つの配列reallocを作成しようとしていますが、プログラムを実行しようとするたびにエラーが発生し、プログラムが動作しなくなります。文字列配列をRealloc
私の試行では、 "realloc"の後に配列を印刷しようとしましたが、reallocが正常に実行されたように見えますが、新しいレコードをスキャンしてから印刷するとエラーになります。
修正1:提案されているように、scanf行の間違いを訂正しました。最初の新しいレコードが入力されるとすぐにプログラムがエラーになります
すべての入力がわかります!
void addRecord(char** firstName,char** lastName, float* score, int * recordSize)
{
int add,i;
printf("How many records do you want to add? ");
scanf("%d", &add);
firstName = realloc(firstName, (*recordSize+add)*sizeof(char*));
for (i=*recordSize; i<(*recordSize)+add; i++)
firstName[i]= malloc(STRSIZE*sizeof(char));
lastName = realloc(lastName, (*recordSize+add)*sizeof(char*));
for (i=*recordSize; i<(*recordSize)+add; i++)
lastName[i]= malloc(STRSIZE*sizeof(char));
score = realloc(score, (*recordSize+add)*sizeof(float));
printf("Please enter the record to be added: \n");
printf("FirstName LastName Score\n");
for (i=*recordSize; i<*recordSize+add; i++)
scanf("%s %s %f", firstName[i], lastName[i], &score[i]);
*recordSize +=add;
}
'scanf()'の '%s'フォーマット指定は' char * '、あなたは 'char ** 'を提供しています。 'firstName [i]'は 'char *'ですので、 '&'演算子を使う必要はありません。 –
[mcve]は常に投稿してください。 –