我正在尝试将一个字符数组以相反的顺序复制到另一个字符数组中。
这是我的方法:
void reversString(char* str){
char* ptr = str;
int i = 0;
// getting length of str/ptr array
while (*(ptr + i) != '\0'){
i = i + 1;
}
char revStr [i];
char * revStrChar = &revStr[0];
int revStrPos = 0;
cout << *(ptr + 3) << endl;
}
这里我只是试图按正常顺序复制它,但是如果我打印输入的最后一个字母(“abcd”),什么也不会发生。它只打印一个空行。
但是如果我删除一个新的字符数组的声明:
void reversString(char* str){
char* ptr = str;
int i = 0;
// getting length of str/ptr array
while (*(ptr + i) != '\0'){
i = i + 1;
}
//char revStr [i];
//char * revStrChar = &revStr[0];
//int revStrPos = 0;
cout << *(ptr + 3) << endl;
}
然后它正确地打印出最后一个字母,即“d”。我不明白声明一个新的 char 数组会如何影响输出! (编译器为minGW,操作系统为Win10)
最佳答案
您标记了 C++11 。 . .为什么不以更现代的 STL 方式真正做到这一点:
#include <iostream>
#include <string>
#include <algorithm>
int main()
{
std::string str{"12345abc"};
std::string copy = str;
std::reverse(copy.begin(), copy.end());
std::cout << copy << std::endl;
return 0;
}
输出:
cba54321
关于c++ - c++中令人困惑的事情,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40259404/