I'm playing with C and I've run into this error:
#include <stdio.h>
int main ()
{
char* foo;
scanf("%s", foo);
printf("entered %s", foo);
return 0;
}
scanf takes pointer, foo is pointer, yet I get bus error. How can I make it work?
I'm playing with C and I've run into this error:
#include <stdio.h>
int main ()
{
char* foo;
scanf("%s", foo);
printf("entered %s", foo);
return 0;
}
scanf takes pointer, foo is pointer, yet I get bus error. How can I make it work?
You never initialize foo, so it points to a more or less random location in memory. Either allocate it on the stack.
char foo[10];
Or malloc it on the heap:
char *foo = (char *)malloc(10 * sizeof(char));
But if you malloc, don't forget to free().
And watch out for buffer overflows; if something takes in a buffer but no maximum size, be very careful. You can specify a maximum length for scanf by doing %9s, for instance. scanf will not account for the terminating null, though, so you need to pass one less than the length of your buffer.