Я узнаю о строках в C теперь.
Каким образом использовать scanf для получения строки, можно сделать
scanf("%s",str1);
и для printf можно сделать
printf("The string is %s\n", str1);
Я понимаю, что для scanf это - потому что строка является просто символьным массивом, который является указателем, но для printf, как получается, что можно просто поставить имя переменной точно так же, как Вы были бы для интервала или плавания?
В C переменные, которые являются массивами, становятся указателем на первый элемент массива при использовании в качестве аргументов функции - поэтому ваш scanf () видит указатель на память (при условии, что "str1" массив).
В вашем printf () "str1" может быть либо указателем на строку, либо массивом символов (в этом случае аргумент, видимый printf (), будет указателем на первый элемент массива ).
scanf
требуется адрес переменной для чтения, а строковые буферы уже представлены как адреса (указатель на место в памяти или массив, который разлагается на указатель).