Почему мой вызов printf() не отображает правильные символы в консоли?

-4

В визуальной студии я ясно вижу, что rstr() (для обратной строки) возвращает "olla\0", но на дисплее консоли отображаются нечитаемые символьные символы. Кроме того, по какой-то причине после вызова printf() переменная reverse преобразуется в нечитаемые значения символов при просмотре переменных в режиме отладки. Кто-нибудь знает, как правильно отобразить строку, возвращаемую rstr()?

#include "stdio.h"

const char* rstr(const char* message) {

const int msg_size = sizeof(message) / sizeof(message[0]);
char r[msg_size + 1];

for (int i = 0; i < msg_size; ++i) {
r[i] = message[msg_size - i - 1];
if (i == (msg_size - 1))
r[msg_size] = '\0';
}

return r;
}

int main()
{
const char* reversed = rstr("allo");
printf("Reversed string is: %s\n", reversed);

getchar();
return 0;
}

спросил(а) 2017-11-30T00:54:00+03:00 2 года, 11 месяцев назад
0
70

const int msg_size = sizeof(message) / sizeof(message[0]);

здесь все неправильно.

message - char*, поэтому sizeof(message) будет размером указателя на char.

И поскольку message[0] является символом, sizeof(message[0]) является по определению. Таким образом, ваш msg_size будет размером указателя на char.

Вы должны передать длину строки в свою rstr().

ответил(а) 2017-11-30T01:20:00+03:00 2 года, 11 месяцев назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема