Witajcie,
Kopiujesz zawsze do pierwszego bufora, brakuje Ci odpowiednich + przy drugim i trzecim; a właściwie to najlepiej by było jakbyś to robił w pętli for.
W C wyrażenie w rodzaju
*(a + b)
możesz zapisać jako
a[b]
Zwalniasz tablice wskaźników, ale nie zwalniasz buforów napisów.
Polecam:
Dodatkowo możesz zerknąć na:
Miłej zabawy
PS. Jak wklejasz kod na forum to używaj znacznika code
Dzięki Rolek0 , wprawdzie nie odwiedziłem i nie przeczytałem jeszcze nic z wklejonych przez Ciebie linków (co pewnie zrobię jutro) ale wystarczyła mi Twoja wskazówka.
Podrasowałem nieco swoj mikro-program i teraz podoba mi się nawet jego zachowanie.
Wklajam go poniżej dla zainteresowanych:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(){
char c_wyraz[255];
char **tablica_wsk_napisow;
int i,cnt;
printf("Podaj, ile wyrazow chcesz zapisac w tablicy? :");
scanf("%d", &cnt);
// przydzielam pamiec na tablice wskaznikow dla wyrazow
tablica_wsk_napisow = (char**)malloc(cnt*sizeof(*tablica_wsk_napisow));
fflush(stdin);
// pobieram kolejno napisy, rezerwuje pamiec i umieszczam je w tablicy wskaznikow do napisow
for(i=0; i<cnt; i++){
printf("\n\n\t%d-y wyraz do tablicy napisow: ",i+1);
scanf("%s", c_wyraz);
fflush(stdin);
*(tablica_wsk_napisow+i) = (char*)malloc((strlen(c_wyraz)+1)*sizeof(char));
strcpy(*(tablica_wsk_napisow+i),c_wyraz);
}
i=0;
while (i<cnt){
printf("\n\t\t\t\t%s", *(tablica_wsk_napisow+i));
i++;
}
// zwolnienie pamieci
for(i=0; i<cnt; i++)
free(*(tablica_wsk_napisow+i));
free(tablica_wsk_napisow);
getch();
return 0;
}
Nadal mam przypiętą karteczkę “Uczę się” jestem więc otwarty na konsktruktywną krytykę.
Pozdrawiam,
Paweł