在写这段代码的时候,我希望根据一个变量x,把二维数组的第x-1行拷贝到一个一维数组,单独写一段代码是能运行的,但是我在整段程序中拷贝就不能拷贝过去,帮忙看看这是为什么叭?
#include <stdio.h>
#include <string.h>
int main()
{
int n;
scanf("%d",&n);
char tmp[8];
char num[10][8]={
{'1','2','3','4','5','6','\0'},
{'3','5','\0'},
{'1','3','4','6','7','\0'},
{'1','3','5','6','7','\0'},
{'2','3','5','7','\0'},
{'1','2','5','6','7','\0'},
{'2','4','5','6','7','\0'},
{'1','3','5','\0'},
{'1','2','3','4','5','6','7','\0'},
{'1','2','3','5','6','7','\0'}
} ;
strcpy(tmp,num[n]);
printf("%s\n",tmp);
return 0;
}
#include <stdio.h>
#include <string.h>
int wid(int n);
void display(char *str,char tmp[],int m,int n,int col);
int main()
{
char num[10][8]={
{'1','2','3','4','5','6','\0'},
{'3','5','\0'},
{'1','3','4','6','7','\0'},
{'1','3','5','6','7','\0'},
{'2','3','5','7','\0'},
{'1','2','5','6','7','\0'},
{'2','4','5','6','7','\0'},
{'1','3','5','\0'},
{'1','2','3','4','5','6','7','\0'},
{'1','2','3','5','6','7','\0'}
} ;
char str[7][27],tmp[8];
int k,col=5,line=7;
scanf("%d",&k);
int digit,x;
for(int h=0;h<k;h++){
memset(tmp,'\0',sizeof(tmp));
scanf("%d",&digit);
printf("%d:\n",digit);
int widd=wid(digit);
int flag=2;
for(int i=0;i<(col*widd+2*(widd-1));i++) {
for(int j=0;j<line;j++){
str[i][j]=' ';
}
}//赋值空格
while(digit>0){
x=digit%10;
strcpy(tmp,num[x]);
printf("%s\n",tmp);
display((char *)str,tmp,(col*(flag-1)+2*(flag-1)),(col*flag+2*(flag-1)),col);
flag--;
digit/=10;
}
// for(int i=0;i<7;i++){
// for(int j=0;j<col*widd+2*(widd-1);j++){
// printf("%c",str[i][j]);
// }
// printf("\n");
// }//output
}
return 0;
}
int wid(int n)
{
int flag=1;
while(n>0){
n/=10;
if(n>0)
flag++;
}
return flag;
}
void display(char *str,char tmp[],int m,int n,int col)
{
int len=strlen(tmp)-1;
for(int i=0;i<len;i++){
switch(tmp[i]-48){
case 1:
for(int r=m;r<n;r++)
*(str+0*col+r)='*';
break;
case 2:
for(int r=0;r<4;r++)
*(str+r*col+m) ='*';
break;
case 3:
for(int r=0;r<4;r++)
*(str+r*col+n-1)='*';
break;
case 4:
for(int r=3;r<7;r++)
*(str+r*col+m)='*';
break;
case 5:
for(int r=3;r<7;r++)
*(str+r*col+n-1)='*';
break;
case 6:
for(int r=m;r<n;r++)
*(str+6*col+r)='*';
break;
case 7:
for(int r=m;r<n;r++)
*(str+3*col+r)='*';
break;
}
}
}