Моя голова искажается, пытаясь понять это.
Назначение - получить строку текста от пользователя, а затем распечатать ее в обратном порядке, включая шестнадцатеричный код для каждого символа.
Я думал, что это было бы просто, и, вероятно, когда-то я понимаю использование.
Я думал, что я настрою переменную, используя char stg_array[80]
, что даст мне максимальный размер 80 символов.
Я бы тогда сделал
while( (stg_array[i] = getch() ) != '\n' )
{
i++;
}
Тогда я бы использовал strlen()
, чтобы определить фактическую длину (я понимаю, что она у меня уже есть, просто хочу использовать strlen()
для практики) и перейти в цикл for
, который будет отсчитывать от strlen(stg_array)-1
printf("Array[%d] = %s Hex Value = %X", i, stg_array[i], i );
Я понимаю ошибку переполнения буфера, которая может возникнуть, если пользователь наберет более 80 символов. Не волнуйтесь об этом прямо сейчас.
То, что я получаю, это то, что strlen()
возвращает длину в первый пробел в тексте.
Если я пропущу пользовательский ввод и просто сделаю char stg_array[80]={"The quick brown fox."}
с фиксированным циклом for
в середине, скажем, 10, программа вылетает.
Я думаю, что собираюсь пообедать о том, как работают строковые массивы C.