【发布时间】:2014-08-13 21:07:36
【问题描述】:
我编写了一个简单的 C++ 程序来反转字符串。我将字符串存储在字符数组中。要反转字符串,我使用相同的字符数组和临时变量来交换数组的字符。
#include<iostream>
#include<string>
using namespace std;
void reverseChar(char* str);
char str[50],rstr[50];
int i,n;
int main()
{
cout<<"Please Enter the String: ";
cin.getline(str,50);
reverseChar(str);
cout<<str;
return 0;
}
void reverseChar(char* str)
{
for(i=0;i<sizeof(str)/2;i++)
{
char temp=str[i];
str[i]=str[sizeof(str)-i-1];
str[sizeof(str)-i-1]=temp;
}
}
现在这个方法不起作用,我在程序执行后得到 NULL 字符串。
所以我想知道为什么我不能等同于字符数组,为什么这个程序不能工作。我可以使用什么解决方案或技巧来使相同的程序运行?
【问题讨论】:
-
可以使用
std::swap(str[i], str[sizeof(str)-i-1]);,而不是带有临时变量的三行代码 -
BTW c++ != c,这里有
using namespace std所以我把它改成c++ -
即使是字符数组,
std::reverse。 -
sizeof(str)-->strlen(str) -
ip中的sizeof(ip)是什么?