#include<stdio.h>
void swap(char *, char *);
int main()
{
char *pstr[2] = {"Hello", "IndiaBIX"};
swap(&pstr[0],&pstr[1]);
printf("%s\t%s", pstr[0], pstr[1]);
return 0;
}
void swap(char **t1, char **t2)
{
char *t;
t=*t1;
*t1=*t2;
*t2=*t;
}
我不明白为什么不能通过调用这样的函数来交换字符串的指针:
swap(pstr[0],pstr[1]);
我陷入了困境,为什么我不应该使用它。请有人帮助我。
谢谢..
最佳答案
实际上,你主要有两个错误:
- 指令
*t2 = *t
中,*t2
是字符串,而*t
是单个字符; swap
的声明与其定义不同。
此外,pstr[0]
和pstr[1]
可以是指向只读字符串的指针,因此将它们声明为指向const char
的指针code> 被认为是一个好的实践。
在这种情况下,以下代码可以正常工作(它仅交换两个指针的值,而不交换字符串本身)。
#include <stdio.h>
static void
swap(const char ** const p, const char ** const q)
{
const char * const pTmp = *p;
*p = *q;
*q = pTmp;
}
int main(void)
{
const char *p[] = { "Hello", "IndiaBIX" };
printf("%s - %s\n", p[0], p[1]);
swap(p, p + 1);
printf("%s - %s\n", p[0], p[1]);
return 0;
}
关于c - C中的字符串交换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12214309/