poj2013---二维数组指针使用

#include <stdio.h>

#include <stdlib.h>

#include<string.h>

int main()

{

    int n,i,set_num=0;

    char arr1[15][26],arr2[15][26];

    char *p1_fir,*p1_sec,*p2_sta,*p2_end;

    while(scanf("%d",&n)!=EOF)

    {

        if(n==0)

            break;

        for(i=0;i<n;i++)

        {

            scanf("%s",arr1[i]);

        }

        p1_fir=&arr1[0];

        p1_sec=&arr1[1];

        p2_sta=arr2;

        p2_end=arr2+(n-1);

        while(1){

        if(p2_sta==p2_end)

        {

            strcpy(p2_end,p1_fir);

            break;

        }

        if(p2_sta>p2_end)

            break;

        strcpy(p2_sta,p1_fir);

        strcpy(p2_end,p1_sec);

        p1_fir+=52;

        p1_sec+=52;

        p2_sta+=26;

        p2_end-=26;

        }

        printf("SET %d\n",++set_num);

        for(i=0;i<n;i++){

        printf("%s\n",arr2[i]);

        }

    }

    return 0;

}

让二维数组名+1就是第二个大元素的首地址

比如:arr[m][n]  p1=arr[0]   对于p1+1只加一个字节

WA:字符串忘记给\0预留一个位置

你可能感兴趣的:(二维数组)