(C语言)如何实现字符串数组中两个字符串元素的交换?

假如我定义了一个字符串数组a[10][20],我想将
a[0]和a[1]两个字符串(字符串等长)交换,我该怎么操作?😭

方法1

char a[10][20];
char t[20];
//省略数组a赋值

strcpy(t,a[0]);
strcpy(a[0],a[1]);
strcpy(a[1],t);

方法2

char a[10][20];
char* b[10];
//省略数组a赋值
int i;
char *t;
for(i=0;i<10;i++)b[i]=a[i];
t=b[0];
b[0]=b[1];
b[1]=t;
//最终b中是排序后的顺序,a本身顺序并不改变

再定义一个字符串,假设为a[2]
先把a[0]复制给a[2]
然后把a[0]的所有数据改为a[1]
最后把a[2]赋值给a[1]

供参考:

#include <stdio.h>
#include <string.h>
int main()
{
    char a[10][20] = { "abcd","1234" }, tmp[20];
    puts(a[0]);
    puts(a[1]);

    strcpy(tmp, a[0]); //交换
    strcpy(a[0], a[1]);
    strcpy(a[1], tmp);

    puts(a[0]);
    puts(a[1]);
    return 0;
}