为什么我对 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()
函数。
在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()
函数。