Dynamiczna tablica stringów jak?

0

Witam!

Mam problem, otóż chciałem sobie wczytać dowolny string do tablicy.

char nazwa [20]
printf("Podaj nazwe zespolu: ");
scanf("%s", &dane.nazwa);

Problem w tym, że nie chce podawać stałego rozmiaru 20, tylko dynamicznie w zależności od tego ile tekstu wpisałem, zwiększać tablice. Rozwiązaniem tego mogłobybyć wpisywanie literka po literce, ale ja chce wpisać w jednym ciągu.
Pytanie, czy się da?

Oczywiście próbowałem mallociem, ale skąd mam wiedzieć jaki jest rozmiar tablicy?

0

I co w związku z tym? w fgetsie potrzebny jest argument z nazwą tablicy, której rozmiar musze znać, a ja nie wiem ile tekstu sobie wpisze.

1

Albo ograniczyć np za pomocą:

char bufor[1024]; 
fgets(bufor,1024,stdin);

Albo odczytywać kawałkami.

2

jak możesz korzystać z rozszerzeń od GNU to:

#define _GNU_SOURCE
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main(void) {
	/* calej linijki przez getline */
	size_t len = 0;
	char *strget = NULL;
	getline(&strget, &len, stdin);
	strget[strlen(strget)-1] = '\0';

	/* przez scanf */
	char *strscnf;
	scanf("%ms",&strscnf);

	/* wypisujemy i zwalniamy pamiec */
	printf("%s\n",strget);
	printf("%s\n",strscnf);
	free(strget);
	free(strscnf);
	return 0;
}

http://ideone.com/7bSlFG

1 użytkowników online, w tym zalogowanych: 0, gości: 1