65,210
社区成员
发帖
与我相关
我的任务
分享char* revert(char* str)
{
int sLength = strlen(str);
char c;
for(int i=0;i<sLength/2; i++)
{
c = *(str+i);
*(str+i) = *(str+sLength-i-1);//Access Violation
*(str+sLength-i-1) = c;
}
return str;
}char* revert(char* str) // 问题1, str不能是只读的,比如char *ss = "sdfsfdsfd";
{
int sLength = strlen(str); // 问题2,str必须以"\0"结尾
char c;
for(int i=0;i<sLength/2; i++)
{
c = *(str+i);
*(str+i) = *(str+sLength-i-1);//Access Violation
*(str+sLength-i-1) = c;
}
return str;
}
// 修改后的
char* revert(char* str, int nlen)
{
// 判断字符是否可读可写,如果是vc可以用下面的函数
if (nLen >1 && AfxIsValidAddress(str, sizeof(char) * nLen))
{
char *start = str, *end = str + nLen-1;
char c;
// 交换数据
for (; start < end; start++, end--)
{
c = *start;
*start = *end;
*end = c;
}
}
return str;
}#include<iostream>
using namespace std;
char* revert(char* str)
{
int sLength = strlen(str);
char c;
for(int i=0;i<sLength/2; i++)
{
c = *(str+i);
*(str+i) = *(str+sLength-i-1);//Access Violation
*(str+sLength-i-1) = c;
}
return str;
}
int main()
{
char s[] = "hello";
cout<<revert(s);
return 0;
}char* revert(char* str)
{
int sLength = strlen(str);
char c;
for(int i=0;i<sLength/2; i++)
{
c = *(str+i);
*(str+i) = *(str+sLength-i-1);
*(str+sLength-i-1) = c;
}
return str;
}
int main()
{
char* str = "abcdefghijklmn";
str = revert(str);
cout<<str<<endl;
system("Pause");
return 0;
}