2014-02-24 22 views
0

我目前正在嘗試爲圖像創建一個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

我很困惑至於爲什麼我的代碼有分割錯誤。任何人都可以偷看並告訴我是否有我在這裏失蹤的東西

+0

'this'沒有被初始化,值是不確定的,它不是零初始化的。考慮到'this'是C++中的一個關鍵字,它可能是標識符的糟糕選擇。 –

+0

這個問題似乎是關於C而不是C++。所以'this'作爲標識符應該沒有問題。 –

+0

謝謝你們!無論如何,我已經整理出來了。問題是, 的問題是在, 字符數組[960] =「... 960個...字母」 ,因爲我認爲,當你宣佈一個字符串,事情應該是這樣 字符數組[# ofelems + 1] =「.... #ofelems ....」 因爲最後一行「\ 0」 – nciacrklo

回答

0

設置初始值this

this = 0; 

沒有初始化,this將不會被包含0

+0

我已經排序out.pls檢查我的答案。謝謝btw! – nciacrklo

0

謝謝你們!無論如何,我已經整理出來了。

問題是上,

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

,因爲我認爲,當你聲明一個字符串的方式,應該是因爲嵌入式"\0"

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

「+1」中的最後元素

如果我錯了,請糾正我。謝謝!

相關問題