Ну это довольно простой.
Печатаемое значение - это мусор, так как всякий раз, когда вы печатаете неинициализированную строку на большинстве языков, вывод представляет собой мусор, потому что, когда вы объявляете строку с разрешением 10 символов, в стеке всего 10 байт. , В нем не задано никакой конкретной ценности.
Ну, похоже, что результат, который вы получаете, зашифрован. (спасибо комментарию Альтера Манна).
Но, когда вы читаете строку с использованием fgets
, scanf
или любой другой функции, не имеет значения, если она не инициализирована или нет. Любое значение вводится пользователем, оно сохраняется в строке. Таким образом, не комментируя ваш scanf
, вы получите идеальный выход. Если вы прокомментировали scanf
, потому что вы не хотите использовать его, просто инициализировать его любит:
char str[201] = {"a", "b"};
и положить все, что вы хотите.
Кроме того, я не уверен, что это хороший способ, так что проверить это: Proper way to initialize a string in C
В основном, если вы не хотите, чтобы прочитать полный ответ, вывод совершенно правильно, так как у вас есть не инициализируется строка, а полученный вами R
хранится в A[5]
, который вы печатаете.
Почему вы прокомментировали 'scanf' и, таким образом, распечатали, используя буфер, содержащий мусор? – kaylum
Каков ожидаемый результат? –
'printf ("% s \ n ", str);' это печать значения мусора и 'printf ("% s \ n ", A [5]);' печатает 'R' в конце (следующая строка) , как показано на выходном изображении. – Himanshu