-1
Visual Studio에서 rstr()
(역방향 문자열로) 함수가 "olla \ 0"을 반환하지만 콘솔 디스플레이에 읽을 수없는 문자 기호가 표시됨을 분명히 알 수 있습니다. 또한 어떤 이유 때문에 printf()
을 호출 한 후 변수 reverse
이 디버그 모드에서 변수를 보면서 읽을 수없는 문자 값으로 변환됩니다. 누구든지 rstr()
에 의해 반환 된 문자열을 올바르게 표시하는 방법을 알고 있습니까?printf()를 호출 할 때 콘솔에 올바른 문자가 표시되지 않는 이유는 무엇입니까?
#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;
}
'r'은 로컬 범위입니다. 해당 함수에서 돌아 오면 범위가 손실되고 데이터가 가비지입니다. 'malloc'을 사용하여 힙에 공간을 할당하십시오. –