我目前正在嘗試爲圖像創建一個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] --- <三分之九百六十= 320位RGB
我很困惑至於爲什麼我的代碼有分割錯誤。任何人都可以偷看並告訴我是否有我在這裏失蹤的東西
'this'沒有被初始化,值是不確定的,它不是零初始化的。考慮到'this'是C++中的一個關鍵字,它可能是標識符的糟糕選擇。 –
這個問題似乎是關於C而不是C++。所以'this'作爲標識符應該沒有問題。 –
謝謝你們!無論如何,我已經整理出來了。問題是, 的問題是在, 字符數組[960] =「... 960個...字母」 ,因爲我認爲,當你宣佈一個字符串,事情應該是這樣 字符數組[# ofelems + 1] =「.... #ofelems ....」 因爲最後一行「\ 0」 – nciacrklo