用户输入的字符串似乎是反转的,但后面跟着一堆垃圾字符。这是我的反向功能:
void reverse(char str[])
{
char reversed[MAX_CHAR];
for(int i = 0; i < strlen(str); i++)
{
reversed[i] = str[strlen(str) - i - 1];
}
cout << reversed << endl;
}
答案 0 :(得分:4)
您需要使用NULL
字符'\0'
,ASCII值0
结束字符串。
试试这个:
void reverse(char str[]) {
char reversed[MAX_CHAR];
int len = strlen(str);
for(int i = 0; i < len; i++) {
reversed[i] = str[len - i - 1];
}
reversed[len] = '\0'; // Add this
cout << reversed << endl;
}
C
和C++
知道字符串结尾的位置。
阅读有关以空值终止的字符序列的更多信息:
答案 1 :(得分:0)
你可以通过2种方式解决这个问题 a)使用空字符初始化反向数组
char reversed[MAX_CHAR] = {0};
b)在反向字符串的末尾添加空字符。
reversed[strlen(str)] = '\0';