帮我看一下,我到底是哪儿错了?

来源:百度知道 编辑:UC知道 时间:2024/06/07 17:27:30
交换两个字符串~

#include <stdio.h>
#include <stdlib.h>

void swap(char *a,char *b);
int main()
{
char *st1="beijing";
char *st2="shanghai";
printf("改变前:\n");
while(*st1!='\0'){
printf("%c",*st1);
st1++;
}
printf("\n");
while (*st2!='\0'){
printf("%c",*st2);
st2++;
}
swap(st1,st2);
printf("\n");
printf("改变后:");
while(*st1!='\0'){
printf("%c",*st1);
st1++;
}
printf("\n");
while (*st2!='\0'){
printf("%c",*st2);
st2++;

之前答案没区别
你的指针地址错了
因为你之前已经指向空字符了
看我改的程序 能正确交换
#include <stdio.h>
#include <stdlib.h>

void swap(char *&a,char *&b);
int main()
{
char *st1="beijing";
char *st2="shanghai";
char *st3=st1;
char *st4=st2;
swap(st3,st4);
printf("改变前:\n");
while(*st1!='\0'){
printf("%c",*st1);
st1++;
}
printf("\n");
while (*st2!='\0'){
printf("%c",*st2);
st2++;
}

printf("\n");
printf("改变后:");
while(*st3!='\0'){
printf("%c",*st3);
st3++;
}
printf("\n");
w