【发布时间】:2018-10-30 16:01:00
【问题描述】:
我正在尝试获取用户输入并将其反转以便稍后进行比较。看起来我正朝着正确的方向前进,但我似乎无法弄清楚为什么我的方法只返回一个字母。当我 cout reversedInput 时,它应该返回整个 Cstring 反转。
#include <cstring>
#include <iostream>
#include <stdio.h>
using namespace std;
void reverseString(char arr[100]);
char reversedInput[100];
int main() {
char input[100];
cout<<"Please enter a string"<<endl;
cin.getline(input, 100);
cout<<"You entered "<<input<<endl;
reverseString(input);
cout<<"The reverse is "<<reversedInput<<endl;
system("pause");
return 0;
}
void reverseString (char arr[]) {
int i;
int j = strlen(arr) - 1;
char temp;
for (i = 0; i < j; i++, j--) {
temp = arr[j];
// arr[j];
reversedInput[i] = temp;
}
}
【问题讨论】:
-
您从未为 reversedInput 添加空终止符。
-
@drescherjm OP 不必这样做。目标缓冲区是全局的,并且只使用一次。它是零填充的,所以终结器(虽然很贵)是免费的。不是一个伟大的设计,但它仍然可以工作。
-
为什么不直接使用
std::string?它有crbegin()和crend()可以满足您的需求。