Bir işlev yazmaya çalışıyorum 3 ana dizisi malloc kullanılarak oluşturuldu, ancak programı çalıştırmaya çalıştığımda her zaman bir hata alıyorum ve program çalışmayı durdurur.Bir dize dizisi Realloc
Hata ayıklama girişimlerimde "realloc" dan sonra dizileri yazdırmaya çalıştım ve realloc başarıyla yapıldı gibi görünüyor, ancak bu yeni kayıtlara taradıktan sonra, yazdırmak için, hata alıyorum.
DÜZELTME 1: Scanf satırındaki hatayı önerilen şekilde düzeltildi. Program, ilk yeni kayıt
girişine girer girmez hata yapar. Herhangi bir girdi takdir edilir!
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() 'için'% s' biçim belirtimi 'char *' bekler, ama sen char '' sağlıyorsun. 'firstName [i]' 'char *' zaten, bu yüzden '&' operatörünü kullanmanız gerekmiyor. –
Her zaman bir [mcve] göndermelisiniz. –