Все переменные, используемые для получения значений из scanf(), должны передаваться в виде адресов. Это означает, что все аргументы должны быть указателями на переменные, используемые как аргументы. Вспомним, что в С это стандартный способ создания передачи по ссылке и он позволяет функции изменять содержимое аргумента. Например, для чтения целого в переменную count надо использовать следующий вызов scanf():
scanf ("%d", & сount);
Строки будут читаться в массивы символов, причем имя массива (без индексов) является адресом первого элемента массива. Таким образом, для чтения строки в символьный массив str следует использовать:
scanf ("%s", str);
В данном случае str является указателем и нет необходимости ставить перед ним оператор &.