If you are using gcc, you can use the GNU-extension a
specifier to have scanf() allocate memory for you to hold the input:
int main()
{
char *str = NULL;
scanf ("%as", &str);
if (str) {
printf("\"%s\"\n", str);
free(str);
}
return 0;
}
Edit: As Jonathan pointed out, you should consult the scanf
man pages as the specifier might be different (%m
) and you might need to enable certain defines when compiling.