我必须交换两个字符串。这是我的代码:
void swap(char *x, char *y) {
char tmp;
tmp = *x;
*x = *y;
*y = tmp;
}
char a[20] = "car";
char b[20] = "hotel";
swap(a, b);
该程序返回har - cotel。为什么呢?
错误在哪里?我需要酒店 - 车。
答案 0 :(得分:8)
答案 1 :(得分:1)
你应该:
void swap(char* &x, char* &y){
char* tmp = x
x=y
y = tmp.
}
on swap。
tmp,x和y是指针。它们内部有一个地址,指向内存中的某个位置。你想在它们上交换地址。
编辑:但问问周围。这已经得到了回答。
答案 2 :(得分:1)
这是一个简单的解决方案:
void swap(char a[], char b[])
{
char tmp[20];
strcpy(tmp, a);
strcpy(a, b);
strcpy(b, tmp);
}
答案 3 :(得分:-1)
因为您使用char来交换char *字符串值。在您的情况下,char tmp = *x
表示从x字符串中获取第一个字符,表示tmp = x[0]
。
所有进一步处理都在字符串的第一个字符处完成。所以它只交换第一个char ...如果你想交换整个字符串然后改变函数如下:
char* tmp = x;
x = y;
y = tmp;