求助:高手帮忙看一下程序吧
求助,麻烦各位啊,我实在看不出来错在哪里程序代码:
#include<stdio.h> #include<stdlib.h> void main() { void showFile(char * filename, char *arr, int h, int w); void mirrorTrans(char * arr, int h, int w); char a[22][46]; char *p =&a[0][0]; showFile("F:\\pet.txt",p,22,46);//把文件打开,把十六进制转化十进制,去除掉意思是换行和回车的元素,其他的存在数组中,表示出来 mirrorTrans(p,22,46);//将图像关于y轴对称过来 printf("\n"); } void showFile(char * filename, char *arr, int h, int w) { char c; int i=0,j=1,b=0,m=0; int d[100]={0}; FILE *f; if((f=fopen(filename,"r"))==NULL) {printf("can not open the file \n"); exit(0); } while(i<w*h) { c=fgetc(f); if((j%3==1)&&(c!='\n')) b=(c-48)*16;//由于文件有规律,转化方法:第一个数字*16+第二个数字 if((j%3==2)&&(c!='\n'))//判断第二个数字 { if(c>='A'&& c<='F') //如果第二个数字为A到F { if((c=='A'||c=='D')&& (b==0))//将A D过滤掉,因为0A0D代表换行回车,把其值置零 { b=0; if(c=='D')//记住D的位置,到时显示时用来换行(因为0A0D连在一起) { d[m]=j; m++; } } else { b=b+c-55; *(arr+i)=(char) b; i++; b=0; } } else//转化为十进制,第一个数字*16与c-48相加一起,赋值给b,b再给数组 { b=b+c-48; *(arr+i)=(char) b; i++; b=0; } } if(c!='\n') j++;//文本中的空格过滤 } for(i=0,m=0;i<w*h;i++) { if(((d[m]-2)/3-2*m )==i+1)//添加文本中的元素(换行和回车) { printf("\n"); m++; } printf("%c",*(arr+i)); } fclose(f); } void mirrorTrans(char * arr, int h, int w) { int i,j; char g; for(i=0;i<h;i++) for(j=0;j<w;j++) { if(w*i+j==46*i)//由于有规律性,判断换行 printf("\n"); g=*(arr+w-j+i*w); switch(g)//将图案给对称过来 { case'\\':g=g-45;break; case'(':g=g+1; break; case')':g=g-1; break; case'/':g=g+45; break; case'}':g=g-2; break; case'p':g=g+1; break; default:g=g; } printf("%c",g); } }
主要有两个问题:
1第一个函数正确的图应该是左边空一格啊,可是我空了2格!
2第二个函数左下角出现了“?”,而且应该要左移一格啊!
我不知道是不是哪一部分存在理解错误?或者在哪个步骤多存了空格啊?
文件内容如下:
20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
20 20 20 20 20 20 20 20 20 20 20 20 20 20 0D 0A
20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
20 20 20 20 20 20 20 20 20 20 2F 7D 20 20 0D 0A
20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
20 20 20 20 20 20 20 20 20 2F 20 7D 20 20 0D 0A
20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
20 20 20 20 20 20 20 20 20 20 20 5F 5F 5F 5F 5F
5F 5F 5F 5F 5F 5F 5F 5F 2F 20 20 7D 20 20 0D 0A
20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
20 20 20 20 20 20 20 20 5F 5F 2F 5F 20 20 2E 3A
3A 3A 3A 2E 2D 27 2D 28 2F 2D 2F 29 20 20 0D 0A
20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
20 20 20 20 20 5F 2F 3A 20 20 2E 3A 3A 3A 3A 2E
2D 27 20 2E 2D 27 5C 2F 5C 5F 27 20 29 20 0D 0A
20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
20 20 20 20 2F 3A 20 20 2E 3A 3A 3A 3A 2E 2F 20
20 20 2D 2E 5F 2D 2E 20 20 70 5C 7C 20 20 0D 0A
20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
20 20 20 20 20 2F 3A 20 28 22 22 22 22 2F 20 20
20 20 22 2E 20 20 28 5F 5F 2F 7C 7C 20 20 0D 0A
20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
20 20 20 20 20 20 5C 3A 3A 29 2E 2D 27 20 20 2D
2E 5F 20 20 5C 2F 20 5C 5C 2F 5C 7C 20 20 0D 0A
20 20 20 20 20 20 20 20 20 20 20 20 20 5F 5F 5F
5F 5F 5F 2E 2D 27 27 29 2F 20 20 27 2D 27 2E 20
2E 20 27 2E 20 7C 20 20 28 69 5F 4F 20 20 0D 0A
20 20 20 20 20 20 20 20 20 20 2E 2D 27 20 20 20
20 20 20 5C 20 20 20 20 20 20 20 2D 27 20 20 20
20 20 20 27 5C 7C 20 20 20 20 20 20 20 20 0D 0A
20 20 20 20 20 5F 5F 5F 2E 2F 20 20 20 20 20 20
2E 2D 27 7C 20 20 20 20 20 20 20 27 2E 20 20 28
20 20 20 20 5C 5C 20 20 20 20 20 20 20 20 0D 0A
20 20 2E 2D 27 20 20 20 3A 20 20 20 20 20 20 27
5F 20 20 5C 20 20 20 20 20 20 20 20 20 27 2D 27
5C 20 20 2F 7C 2F 20 20 20 20 20 20 20 20 0D 0A
20 2F 20 20 20 20 20 20 29 5C 5F 20 20 20 20 20
20 27 2D 20 29 5F 5F 5F 5F 5F 5F 5F 5F 5F 2E 2D
7C 5F 2F 5E 5C 20 20 20 20 20 20 20 20 20 0D 0A
20 28 20 20 20 2E 2D 27 20 20 20 29 2D 2E 5F 2D
3A 20 20 2F 20 20 20 20 20 20 20 20 5C 28 2F 5C
27 2D 2E 5F 20 27 2E 20 20 20 20 20 20 20 0D 0A
20 20 28 20 20 20 29 20 20 5F 2F 2F 5F 2F 7C 3A
20 20 2F 20 20 20 20 20 20 20 20 20 20 27 5C 28
29 20 20 20 27 5C 5F 5C 20 20 20 20 20 20 0D 0A
20 20 20 28 20 28 20 20 20 5C 28 29 20 20 20 29
5F 2F 20 20 20 20 20 20 20 20 20 20 20 20 20 29
2F 20 20 20 20 20 20 5C 5C 20 20 20 20 20 0D 0A
20 20 20 20 29 20 20 20 20 20 5C 5C 20 20 28 5F
29 20 20 20 20 20 20 20 20 20 20 20 20 20 2F 2F
20 20 20 20 20 20 20 20 29 5C 20 20 20 20 0D 0A
20 20 20 20 20 20 20 20 20 20 5F 6F 5C 20 20 5C
5C 20 20 20 20 20 20 20 20 20 20 20 20 28 6F 5F
20 20 20 20 20 20 20 7C 5F 5F 5C 20 20 20 0D 0A
20 20 20 20 20 20 20 20 20 20 5C 5F 2F 20 20 20
5C 5C 5F 5F 20 20 20 20 20 20 20 20 20 20 29 5F
5C 20 20 20 20 20 20 20 20 20 20 20 20 20 0D 0A
20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
20 29 5F 5F 5C 20 20 20 20 20 20 20 20 20 20 20
20 20 20 20 20 20 20 20 20 20 20 20 20 20 0D 0A
20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
20 20 20 20 20 20 20 20 20 20 20 20 20 20