Witam,
Mam napisaną taką funkcję, lecz niestety nie rozumiem dlaczego w argumencie funkcji malloc do wyniku działania funkcji strlen dodaje się jeden?
// Funkcja dodajaca nowa osobe do dziennika
int dodaj(char* nowe_imie_nazwisko, float* nowe_oceny)
{
char* kopia;
int i;
if(indeks<MAX-1) // sprawdzanie, czy jest jeszcze miejsce w tablicy
{
kopia=malloc((strlen(nowe_imie_nazwisko)+1)*sizeof(char)); // rezerwacja pamieci, adres zarezerwowanego obszaru wpisywany do wskaznika 'kopia'
strcpy(kopia, nowe_imie_nazwisko); // kopiowanie ciagu znakowego 'nowe_imie_nazwisko' pod adres w 'kopia'
dane[indeks]=kopia; // element dane[indeks] wskazuje teraz na to samo co 'kopia'
for(i=0; i<LICZBA_ZADAN; i++)
oceny[indeks][i]=nowe_oceny[i]; // przepisanie ocen
return indeks++; // zwraca numer studenta
}
else
return -1; // nie ma juz miejsca w tablicy
}
Dziękuję
C