Alokacja pamięci dla danych podawanych przez użytkownika

0

Witam,

Czy istnieje możliwość bezpośredniego dynamicznego zaalokowania pamięci do danych podawanych przez użytkownika (odbieranych za pomocą scanf())?

0

Zapomniałem dodać, że mówię o C, nie C++ :)

EDIT: Wiem, że istnieje malloc(). Ale jak go użyć do przydzielenia pamięci od razu przy pobieraniu zmiennej od użytkownika przez scanf()?

0

normalnie

scanf();
malloc();

0

Ale chodzi mi o to, że już w scanf muszę podać jakąś zmienną, w której to, co poda user ma być zapisane. Bo chyba nie mogę zrobić czegoś takiego?

char *name;
gets(name);
name = (char *)malloc(sizeof(char)*(strlen(name)+1));
0

Nie możesz. Możesz zrobić tak:

char buf[255];
char* str = NULL;
size_t str_len = 0;
size_t buf_len;

do
{
	if(!fgets(buf, 255, stdin)) break;
	buf_len = strlen(buf);
	str = (char*)realloc(str, str_len + buf_len + 1);
	strcpy(str + str_len, buf);
	str_len += buf_len;
}
while(buf[buf_len - 1] != '\n');

printf(str);

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