gpt4 book ai didi

c - c中的字符串交换

转载 作者:行者123 更新时间:2023-12-02 05:32:14 25 4
gpt4 key购买 nike

    #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 的指针被认为是一种良好做法。

在那种情况下,下面的代码可以正常工作(它只交换两个指针的值,而不是字符串本身)。

#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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com