c语言交换两个字符串的位置

img

img


c语言如何在不用指针的情况下实现交换两个字符串的位置呢?求指教

int str_swap(char s[], char t[])
{
char tmp[MAX_LEN];
strcpy(tmp, s);
strcpy(s, t);
strcpy(t, tmp);
}
楼上用1000的数组不严谨,用MAX_LEN比较合理。
原理就是你用另外一个空间去缓存然后交换。你调用的那个函数原理是这样的。和用不用指针没有关系!

int str_swap(char s[], char t[])
{
char tmp[1000];
strcpy(tmp, s);
strcpy(s, t);
strcpy(t, tmp);
}

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 你可以看下这个问题的回答https://ask.csdn.net/questions/7743131
  • 这篇博客也不错, 你可以看下【C语言】将一个字符串插入至另一个源字符串的某个位置
  • 同时,你还可以查看手册:c语言-字符串字面量 中的内容
  • 除此之外, 这篇博客: 万字小长文 初识C语言 C语言基础知识点总结 建议直接收藏 期末复习的法宝中的 逻辑操作符 部分也许能够解决你的问题, 你可以仔细阅读以下内容或者直接跳转源博客中阅读:
        &&    逻辑与
         | |       逻辑或
  • 您还可以看一下 王健伟老师的C语言入门篇课程中的 字符串的指针和指向字符串的指针变量小节, 巩固相关知识点
  • 以下回答来自chatgpt:

    在不使用指针的情况下,可以通过以下步骤实现交换两个字符串的位置:

    1. 定义一个临时的字符数组,用于存储第一个字符串。
    2. 将第二个字符串复制到第一个字符串的位置。
    3. 将临时数组中存储的第一个字符串复制到第二个字符串的位置。

    示例代码如下:

    #include <stdio.h>
    #include <string.h>
    
    void swapStrings(char str1[], char str2[]) {
       char temp[100];
    
       // 将第一个字符串复制到临时数组
       strcpy(temp, str1);
    
       // 将第二个字符串复制到第一个字符串的位置
       strcpy(str1, str2);
    
       // 将临时数组中的第一个字符串复制到第二个字符串的位置
       strcpy(str2, temp);
    }
    
    int main() {
       char str1[100], str2[100];
    
       printf("输入第一个字符串:");
       fgets(str1, sizeof(str1), stdin);
    
       printf("输入第二个字符串:");
       fgets(str2, sizeof(str2), stdin);
    
       // 交换字符串
       swapStrings(str1, str2);
    
       printf("交换后的字符串:\n");
       printf("第一个字符串:%s", str1);
       printf("第二个字符串:%s", str2);
    
       return 0;
    }
    

    通过以上代码,可以实现交换两个字符串的位置。用户可以输入两个字符串,程序会输出交换后的结果。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^