我编写了以下代码来反转字符串而不使用<algorithm> reverse.我写:
#include <string.h>
#include <iostream>
using namespace std;
void reverse(char *str){
int sizeStr=strlen(str);
int firstChar,lastChar,temp;
for(lastChar = (sizeStr - 1),firstChar = 0 ; lastChar>firstChar ; lastChar--, firstChar++){
temp = str[firstChar];
str[firstChar]=str[lastChar];
str[lastChar] = temp;
}
}
int main() {
char *str;
str = "myname";
reverse(str);
cout << str << endl;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我得到了段错误str[firstChar]=str[lastChar];.请帮我弄清楚我的错误.
注意:我声明char str[] = "myname"并完美地工作.但是根据你的所有解释,我们必须学会*str和str[].非常感谢.在帮助新程序员方面走了很长的路.
您无法修改常量字符串文字.
使用std::string(感谢@chris).使用std::swap用于交换的字符.(参见C++字符串交换字符位置)
malloc缓冲区(具有字符串的长度)和strcpy字符串,然后reverse为新分配的缓冲区执行.