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预留一个位置

posted @ 2015-05-28 15:29  Gabyler  阅读(137)  评论(0编辑  收藏  举报