请教一个用指针交换字符串中两个字符的有关问题
请问一个用指针交换字符串中两个字符的问题
上面的代码是为了交换字符字符串中第一个字符和最后一个字符,但是会出现字符地址写入冲突?大侠帮忙
------解决思路----------------------
定义成数组吧,字符串常量只读
------解决思路----------------------
把char *S="i am a student";改成char S[]="i am a student";
------解决思路----------------------
char *S="i am a student";
这个应该定义为
char const *S="i am a student";
这个 BUG 是因为历史原因。
------解决思路----------------------
void reverse(char *p1,char *p2)
{
char temp=*p1;
*p1=*p2;
*p2=temp;
}
void main()
{
char *S="i am a student";
char *pbegin=S;
char *pend=S;
while(*pend!='\0')
{
pend++;
}
pend--;
reverse(pbegin,pend);
}
上面的代码是为了交换字符字符串中第一个字符和最后一个字符,但是会出现字符地址写入冲突?大侠帮忙
------解决思路----------------------
定义成数组吧,字符串常量只读
------解决思路----------------------
把char *S="i am a student";改成char S[]="i am a student";
------解决思路----------------------
char *S="i am a student";
这个应该定义为
char const *S="i am a student";
这个 BUG 是因为历史原因。
------解决思路----------------------
void reverse(char *p1 ,char *p2)
{
char temp = *p1;
*p1 = *p2;
*p2 = temp;
}
void main()
{
char s[]="i am a student";
char *pstart = s;
char *pend=s;
while(*pend!='\0')
{
pend++;
}
pend--;
reverse(pstart,pend);
printf("c=%s\n",s);
}