Из того, что вы опубликовали var
- массив символов. В этом случае вам не нужен амперсанд, просто имя var
будет оцениваться как (char *) по мере необходимости.
Детали:
scanf нужен указатель на переменную, которая будет хранить ввод. В случае строки вам нужен указатель на массив символов в памяти, достаточно большой для хранения любой строки для чтения. Когда вы объявляете что-то вроде char var[100]
, вы создаете пространство для 100 char
с с помощью var [0 ] относится к первому символу, а var [99] относится к сотому символу. Имя массива само по себе оценивается точно так же, как &var[0]
, который является указателем на первый символ последовательности, именно то, что нужно для scanf. Поэтому все, что вам нужно сделать, это scanf("%s", var);
, но помните, что scanf
не налагает ограничений на размер входных строк, поэтому, если пользователь введет строку длиной 101, у вас будет переполнение буфера, что приведет к ошибкам или, еще хуже проблемы с безопасностью. Лучший выбор, как правило, fgets
, который допускает ограничения размера для входных строк.