65,187
社区成员




void reverse(char *pBegin, char *pEnd){
if(pBegin == NULL || pEnd == NULL)
return;
while(pBegin < pEnd){
char temp = *pBegin;
*pBegin = *pEnd; //编译到这地方失败,0xC0000005: 写入位置 0x0087DCAC 时发生访问冲突。
*pEnd = temp;
pBegin++;
pEnd--;
}
}
char* reverseSentence(char *pData){
if(pData == NULL)
return NULL;;
char *pBegin = pData;
char *pEnd = pData;
while(*pEnd!='\0') pEnd++;
pEnd--;
//旋转句子
reverse(pBegin,pEnd);
//旋转单词
pBegin = pData;
pEnd = pData;
while(*pBegin !='\0'){
if(*pBegin == ' '){
pBegin++;
pEnd++;
}else if(*pEnd == '\0' || *pEnd == ' '){
reverse(pBegin,--pEnd);
pBegin = ++pEnd;
}else{
pEnd++;
}
}
return pData;
}
#pragma comment(linker,"/SECTION:.rdata,RW")
//加这句可以让常量区可写,后果自负!
#include<iostream>
using namespace std;
void reverse(char *pBegin, char *pEnd)
{
if(pBegin==NULL || pEnd==NULL)
return;
while(pBegin < pEnd)
{
char temp = *pBegin;
*pBegin = *pEnd; //编译到这地方失败,0xC0000005: 写入位置 0x0087DCAC 时发生访问冲突。
*pEnd = temp;
pBegin++;
pEnd--;
}
}
char* reverseSentence(char *pData)
{
if(pData==NULL)
return NULL;
char *pBegin = pData;
char *pEnd = pData;
while(*pEnd!='\0')
pEnd++;
pEnd--;
//旋转句子
reverse(pBegin,pEnd);
//旋转单词
pBegin = pData;
pEnd = pData;
while(*pBegin !='\0')
{
if(*pBegin == ' ')
{
pBegin++;
pEnd++;
}
else if(*pEnd == '\0' || *pEnd == ' ')
{
reverse(pBegin,--pEnd);
pBegin = ++pEnd;
}
else
{
pEnd++;
}
}
return pData;
}
void main()
{
char*p="i am a student";
cout<<p<<endl;
cout<<"翻转后为";
reverseSentence(p);
}
略试了下,编译木错,但运行时崩溃了,且无法输出翻转后的结果