c语言 - 为什么我对 printf() 的调用无法在控制台中显示正确的字符?



在Visual Studio中,我可以清楚地看到 rstr()(to反向字符串)函数返回" 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] = '';
    }
    return r;
}
int main() 
{
    const char* reversed = rstr("allo");
    printf("Reversed string is: %sn", reversed);
    getchar();
    return 0;
}
const int msg_size = sizeof(message) / sizeof(message[0]);

这里都是错误的。

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

,并且由于message[0]是char,因此sizeof(message[0])是一个定义。因此,您的msg_size将是指向字符的指针的大小。

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

相关内容

最新更新