读书人

小弟我想逆序输出一个字符串可是出错

发布时间: 2013-01-28 11:49:56 作者: rapoo

我想逆序输出一个字符串,可是出错了,,大家给看看

#include "stdafx.h"
#include <string.h>
char *StringTest(char *Sstring)
{
char *EndString = Sstring;
int len = strlen(Sstring)-2;
char temp;
int i = 0;
while (i<len)
{
temp = EndString[i];
EndString[i] = EndString[len];
EndString[len] = temp;
i++;
len--;
}
return EndString;
}
int _tmain(int argc, _TCHAR* argv[])
{
char *a = "abcd";
printf("%s\n",StringTest(a));
return 0;
}

[解决办法]
用指针要小心啊
#include "stdafx.h"
#include <string.h>
char *StringTest(char *Sstring)
{
char *EndString = Sstring;//其实没必要,他俩指向的内容一样,改这个,那个也变
int len = strlen(Sstring)-2;//应该是-1啊
char temp;
int i = 0;
while (i<len)
{
temp = EndString[i];
EndString[i] = EndString[len];
EndString[len] = temp;
i++;
len--;
}
return EndString;
}
int _tmain(int argc, _TCHAR* argv[])
{
char *a = "abcd";//用char a[] = "abcd";
printf("%s\n",StringTest(a));
return 0;
}

[解决办法]
1,ar *a = "abcd";
*StringTest(char *Sstring) ;
//a的地址中的数据时禁止被修改的,改成char a[]="abcd;
就可以了
[解决办法]

void Reverse(char *word) // 适合C风格字符串反转函数,只支持英文
{
// 来源 C++ Primer Plus 第五章 forstr2.cpp -- reversing an array
char temp;
size_t i, j; // 两个索引 变量i为末位,j为开始,从两头还是交换
for (j = 0, i = strlen(word) - 1; j < i; --i, ++j) { // 到中间位置就交换好了
temp = word[i];
word[i] = word[j];
word[j] = temp;
}

}
int _tmain(int argc, _TCHAR* argv[])
{
char a[] = "abcd";
Reverse(a);
std::cout<<a;
return 0;
}

读书人网 >C++

热点推荐