我正在开发一个应该处理表单的 PGM 图像文件的程序
P2
24 7
11
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 11 11 11 11 0 11 0 0 0 11 0 0 11 0 0 0 11 0 0 0 11 0 0
0 11 0 0 0 0 11 0 0 0 11 0 11 0 11 0 0 11 11 0 0 11 0 0
0 11 11 11 11 0 0 11 0 11 0 0 11 11 11 0 0 11 0 11 0 11 0 0
0 11 0 0 0 0 0 11 0 11 0 11 0 0 0 11 0 11 0 0 11 11 0 0
0 11 11 11 11 0 0 0 11 0 0 11 0 0 0 11 0 11 0 0 0 11 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7
我有以下结构来保存数据和初始化函数
struct Image {
int row, column;
int maxValue;
unsigned int data[MAXLINELENGTH];
}
Image * Image_Init ()
{
Image tmp_Image;
tmp_Image.row = 0;
tmp_Image.column = 0;
int i;
for (i = 0; i < MAXLINELENGTH; i++)
{
tmp_Image.data[i] = 0;
}
return &tmp_Image;
}
它给了我一个警告,说该函数返回一个局部变量的地址。我想要做的基本上是创建一个对象图像,并通过它。我该怎么做呢?
谢谢你
编辑====================================
我似乎可以使用
Image * Image_Init ()
{
Image *tmp_Image;
tmp_Image->row = 0;
tmp_Image->column = 0;
int i;
for (i = 0; i < MAXLINELENGTH; i++)
{
tmp_Image->data[i] = 0;
}
return tmp_Image;
}
现在我遇到了需要从数组中读取数据的问题。我使用相同的基本结构
Image * Image_Init_From_Array (unsigned int height, unsigned int width, unsigned int *data)
{
Image *tmp_Image;
tmp_Image->row = width;
tmp_Image->column = height;
tmp_Image->maxValue = 255;
int i;
for (i = 0; i < MAXLINELENGTH; i++)
{
tmp_Image->data[i] = data[i];
}
return tmp_Image;
}
这编译得很好,但会导致分段错误。