Witam,
Czy istnieje możliwość bezpośredniego dynamicznego zaalokowania pamięci do danych podawanych przez użytkownika (odbieranych za pomocą scanf())?
Witam,
Czy istnieje możliwość bezpośredniego dynamicznego zaalokowania pamięci do danych podawanych przez użytkownika (odbieranych za pomocą scanf())?
http://www.cplusplus.com/reference/clibrary/cstdlib/malloc/
albo operator new
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()?
normalnie
scanf();
malloc();
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));
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);