C语言 如何从较小的数组中创建更大的数组?分段错误



我目前正在尝试为图像创建一个 320x240 数组,但像素是通过行(一次 320 个)发送的。所以我想到只运行一个计数为 240 的循环,以便在每次计数时我将较小的数组 [320] 插入到较大数组的数组 [240][320] 中。

这是我到目前为止完成的代码。

int main()
{
    int mi,mj,this;
    while(this < 240)
    {
        decodeHex(stringToDecode,hexValues);
        compile(this,hexValues);
        this=this+1;
    }

    for(mi = 0; mi < 240; mi=mi+1)
    {
        printf("npctureArray [%d][%d]n",mi,320);
        for(mj=0; mj < 320;mj=mj+1)
        {
            printf("%lx",pictureArray[mi][mj]);
        }
    }
    return 0;
}
void decodeHex(char * encodedString,unsigned long * hexConverted)
{
    int i;
    unsigned long offset = 0x41;
    for(i=0;i<strlen(encodedString);i = i+3)
    {
           *hexConverted = (((unsigned long)encodedString[i]- offset) << 8)  |  (((unsigned long)encodedString[i+1] - offset) << 4) | ((unsigned long)encodedString[i+2] - offset);
           hexConverted = hexConverted + 1;
    }
}
void compile(int i,unsigned long * ptr)
{
    int j;
    for(j= 0;j<320;j=j+1)
    {
           pictureArray[i][j] = (unsigned long)*(ptr+j);
    }
}

代码的解码器部分接收一个字符数组[960],因此它被转换为无符号长数组[320] <--- 960/3 = 320 RGB

我很困惑为什么我的代码有分段错误。谁能看一眼,告诉我这里是否缺少什么

设置this的初始值。

this = 0;

如果不进行初始化,this将不包含0

谢谢大家! 无论如何,我已经解决了。

问题出在,

char array[960] = " ....960 letters..."

因为我认为当你以这种方式声明一个字符串时,它应该是

char array[#ofelems + 1] = ".... #ofelems...."

"+1",因为最后一个元素中嵌入了""

如果我错了,请纠正我。谢谢!

最新更新