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

时间:2023-01-01 16:35:33
#include <stdio.h>
#include <stdlib.h>
#include<string.h>
int main()
{
int n,i,set_num=;
char arr1[][],arr2[][];
char *p1_fir,*p1_sec,*p2_sta,*p2_end;
while(scanf("%d",&n)!=EOF)
{
if(n==)
break;
for(i=;i<n;i++)
{
scanf("%s",arr1[i]);
}
p1_fir=&arr1[];
p1_sec=&arr1[];
p2_sta=arr2;
p2_end=arr2+(n-);
while(){
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+=;
p1_sec+=;
p2_sta+=;
p2_end-=;
}
printf("SET %d\n",++set_num);
for(i=;i<n;i++){
printf("%s\n",arr2[i]);
}
}
return ;
}

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

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

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