gpt4 book ai didi

c - 功能段错误

转载 作者:太空宇宙 更新时间:2023-11-04 06:08:02 24 4
gpt4 key购买 nike

我正在学习如何使用 SDL 库进行图形编程,但我在下一个代码中遇到了段错误:

int situador(SDL_Surface * dib,struct sit_per per)
{

SDL_Rect pos;
struct sit_per * est;
est=&per;


while(est)
{
pos.x = est->ac->x;
pos.y = est->ac->y;
pos.w = est->ac->img[est->ac->dir]->w;
pos.h = est->ac->img[est->ac->dir]->h;
SDL_BlitSurface(est->ac->img[est->ac->dir], NULL, dib, &pos);
est=est->si;
}


return 0;
}

dib 变量来自这个函数:

SDL_Surface * draw = SDL_CreateRGBSurface(SDL_SWSURFACE, ANCHO, ALTO, 24,rmask, gmask,bmask, amask);

结构 sit_per 如下:

struct sit_per
{
struct personaje * ac;
struct sit_per * si;
};

struct personaje
{
char des[50];
SDL_Surface * img[8];
int dir;
int x;
int y;
};

并且 img 数组填充了下一个函数:

struct personaje * creador(char * cad)
{
int x;
struct personaje * per;

per=(struct personaje *)malloc(sizeof(struct personaje));
strcpy(per->des,cad);

per->img[0] = SDL_LoadBMP("/home/andoni/SDL/img/flecha/0.bmp");
per->img[1] = SDL_LoadBMP("/home/andoni/SDL/img/flecha/1.bmp");
per->img[2] = SDL_LoadBMP("/home/andoni/SDL/img/flecha/2.bmp");
per->img[3] = SDL_LoadBMP("/home/andoni/SDL/img/flecha/3.bmp");
per->img[4] = SDL_LoadBMP("/home/andoni/SDL/img/flecha/4.bmp");
per->img[5] = SDL_LoadBMP("/home/andoni/SDL/img/flecha/5.bmp");
per->img[6] = SDL_LoadBMP("/home/andoni/SDL/img/flecha/6.bmp");
per->img[7] = SDL_LoadBMP("/home/andoni/SDL/img/flecha/7.bmp");
per->img[8] = SDL_LoadBMP("/home/andoni/SDL/img/flecha/8.bmp");

for(x=0;x<9;x++)
if(!per->img[x])
x=10;
if(x==10)
return NULL;
else
return per;
}

我确信图像的路径写得很好,我可以说 x 和 y 坐标也写得很好。

我会感谢任何建议,在此先感谢。

最佳答案

您的代码将 9 个图像指针加载到一个包含 8 个元素的数组中。

这不是幸福的秘诀。

关于c - 功能段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5765096/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com