| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 473 人关注过本帖
标题:求助:高手帮忙看一下程序吧
取消只看楼主 加入收藏
樱花自在
Rank: 1
等 级:新手上路
帖 子:27
专家分:5
注 册:2012-12-29
结帖率:75%
收藏
已结贴  问题点数:20 回复次数:1 
求助:高手帮忙看一下程序吧
求助,麻烦各位啊,我实在看不出来错在哪里
程序代码:
#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   
2013-06-26 00:32
樱花自在
Rank: 1
等 级:新手上路
帖 子:27
专家分:5
注 册:2012-12-29
收藏
得分:0 
好吧 为什么我的问题没人回答呢  虽然我现在已经写出来了 唉
2013-07-01 23:01
快速回复:求助:高手帮忙看一下程序吧
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.019395 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved