首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

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

2013-01-28 
我想逆序输出一个字符串,可是出错了,,大家给看看#include stdafx.h#include string.hchar *StringTest

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

#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;
}

热点排行