Вы никогда не инициализируете foo
, поэтому он указывает на более или менее случайное место в памяти. Либо выделите его в стеке.
char foo[10];
Или malloc это в куче:
char *foo = (char *)malloc(10 * sizeof(char));
Но если вы malloc, не забудьте освободить ().
И следите за переполнением буфера; если что-то занимает буфер, но не имеет максимального размера, будьте очень осторожны. Вы можете указать максимальную длину для scanf
, выполнив, например, %9s
. scanf
не будет учитывать завершающий ноль, поэтому вам нужно передать на единицу меньше длины вашего буфера.