在c语言二维数组中怎样交换两个数组元素中的字符串,请写代码.

Python013

在c语言二维数组中怎样交换两个数组元素中的字符串,请写代码.,第1张

int strcpy(char *s1,const char *s2)

开辟一个缓冲区,比如

char buff[100]//假设你的字符串不超过这么多

而你的而为数组

char **argv

其中argv[0] = "this is the first string"

argv[1] = "this is the seconde string"

你只须调用如下

strcpy(buff,argv[0])

strcpy(argv[0],argv[1])

strcpy(argv[1],buff)

一下是完整代码,并测试过

#include <stdio.h>

#include <string.h>

char argv[2][100]={ "This is the first string","This is the second string"}

// 存储字符串的二维数组,每个字符串最长为99个字节

char buff[100]

//缓冲区

int main()

{

printf("转换前:\n")

printf("argv[0] = %s\n",argv[0])

printf("argv[1] = %s\n",argv[1])

strcpy(buff,argv[0])

strcpy(argv[0],argv[1])

strcpy(argv[1],buff)

printf("转换后:\n")

printf("argv[0] = %s\n",argv[0])

printf("argv[1] = %s\n",argv[1])

return 0

}

char str[20]={0}

char (*p)[20]=&a[0]

str=a[0] //将a[0]处的值保存下来,以免交换时a[0]处的值丢失.

*p[0]=a[1]

*p[1]=str

不知行不行 ,你自己去试一下.

有如下两种方法:

一、循环按每个元素交换。

以下程序完成二维数组第0行和第1行的交换。

#include <stdio.h>

int main()

{

    int a[2][2] = {1,2,3,4}

    int v

    int i,j

    

    for(i = 0 i < 2 i ++)

    {

        //以下三行是对i位置的第0行和第1行数据进行交换。

        v = a[0][i]

        a[0][i] = a[1][i]

        a[1][i] = v

    }

    

    //输出交换后的结果

    for(i = 0 i < 2 i ++)

    {

        for(j = 0 j < 2 j ++)

            printf("%d ", a[i][j])

        printf("\n")

    }

}

二、通过memcpy函数进行整体数据交换。

memcpy函数声明在string.h中,其声明为:

void *memcpy (void *dest, const void *src,size_t n)

功能是把src位置上,长度为n字节的数据,复制到dest位置上。

使用这个函数,需要一个长度为一行数据所占空间的临时空间。

使用memcpy功能同上一个例子的代码如下:

#include <stdio.h>

#include <string.h>

int main()

{

    int a[2][2] = {1,2,3,4}

    int t[2]//临时空间。

    int i,j

    

    memcpy(t,a[0], sizeof(a[0]))//将第0行的数据放到临时空间。

    memcpy(a[0], a[1], sizeof(a[0]))//将第1行数据放到第0行中。

    memcpy(a[1], t, sizeof(a[0])) //将保存到t中的数据,即原本的第0行数据,放到第1行中。

    

    //输出交换后的结果

    for(i = 0 i < 2 i ++)

    {

        for(j = 0 j < 2 j ++)

            printf("%d ", a[i][j])

        printf("\n")

    }

}

以上两个程序达到同样的效果,输出为:

3 4

1 2