struct
{
 long data[256];
}tblock
long *screen;
int Wscreen,Hscreen;void displayblock(int x,int y,tblock *b)
{
int i,j;
for(i = 0;i < 16;i++)
{
    for(j = 0;j < 16;j++)
    {
      screen[x-1+j+(y-1)*Wscreen+j*16] = b.data[j+i*16];
    }
}
}

解决方案 »

  1.   

    语法上没见有错,功能就取决于screen[x-1+j+(y-1)*Wscreen+j*16] = b.data[j+i*16]; 这句了。
      

  2.   


    UP,除了这个1.b.data语法错误,应为b->data
    2.Wscreen没有赋初值
    3.Hscreen没用到
      

  3.   

    整体功能为:将b.data块里的一段数据比如16*16赋给screen,但是要在指定位置(x,y),畸变成指定宽度(16)显示,看上去除了j改为i之外没什么错,如果我前面理解是正确的话,其逻辑是错误的.
    screen[x-1+j+(y-1)*Wscreen+j*16] = b.data[j+i*16]; 
    应该为:screen[x-1+j+(i+(y-1))*Wscreen] = b.data[j+i*16]; 
      

  4.   


    意思就是你没有new一下screen指针应该screen = new long;指针声明了一定要申请内存哦。然后使用完以后要记得delete一下
      

  5.   

    1. 楼主没有说明这段代码是做什么用的,很难查错
    2. 楼主没有说明这段代码的错误信息是什么,确实很难让人提供足够的帮助,建议楼主先看一看《提问的艺术》一贴3. screen没有申请内存
    4. b是个指针,不能使用.,而是应该使用->
    5. Wscreen没有付值,很危险