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