Tablica wskaźników do napisów w C

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 :smiley:

PS. Jak wklejasz kod na forum to używaj znacznika code :wink:

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ł