为什么我对 printf() 的调用不能在控制台中显示正确的字符?

Why can't my call to printf() display the right characters in console?

在visual studio中,我可以清楚地看到rstr()(反转字符串)函数returns "olla[=17=]",但是控制台显示显示不可读的字符符号。此外,出于某种原因,在调用 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] = '[=10=]';
    }

    return r;
}

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

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

这里全错了。

消息是 char*,因此 sizeof(message) 将是指向 char 的指针的大小。

并且因为 message[0] 是一个字符,所以 sizeof(message[0]) 根据定义是一个。所以你的 msg_size 将是指向 char 的指针的大小。

您需要将字符串的长度传递给您的 rstr() 函数。