很简单的程序,为什么time在逆转的时候会变成emtt?并且这错误是有时候出现,随机的。
逻辑上没错,哪儿有bug?
奇怪。
/*
* testcode.cpp
*
* Created on: Sep 10, 2014
* Author:
*/
#include <cstring>
#include <iostream>
using namespace std;
char* reverseString3(char* str)
{
char tmp;
for(int i = 0; i < strlen(str)/2;i++)
{
tmp=str[i];
str[i]=str[strlen(str)-1-i];
str[strlen(str)-1-i]=tmp;
}
return str;
}
char* reverseString4(char* str)
{
if(strlen(str)==1 || strlen(str)==0) return str;
char tmp;
tmp=str[strlen(str)-1];
strncpy(str+1,str,strlen(str)-1);
str[0]=tmp;
reverseString4(str+1);
return str;
}
int main(int argc, char *agrv[])
{
//string s1 = "192.168.1.1";
char str[]=("this is a long time ago.");
cout<<str<<endl;
cout<<reverseString3(str)<<endl;
cout<<reverseString3(str)<<endl;
cout<<reverseString4(str)<<endl;
return 1;
}
输出:
this is a long time ago.
.oga emit gnol a si siht
this is a long time ago.
.oga emtt gnol a si siht