2012-05-16 68 views
0

我試圖做我的作業數組索引中增加的分段錯誤?

在我可以使用這條線沒有任何問題,沒有分段錯誤,我不知道爲什麼現在編譯我的代碼後,它不工作。

這是它從main()如何調用:

rb = ascii(back_data[i], phr); 

這是數據在main()如何界定:

char phr[41]; 

int ascii(const char back[ ], char data[ ]){ 
    int l = 0, n = 0, i = 0, co = 0; 
    char binary_holder[8], char_set; 

    binary_holder[0] = '\0'; 

    l = strlen(back); 

    for (i = 0; i <= l; i++){ 

    if (back[i] == '0' || back[i] == '1' && co < 8){ 

     binary_holder[co] = back[i]; 
     co++; 
    } 
    if(co == 8){ 

     binary_holder[8] = '\0'; 
     co = 0; 
    } 

    char_set = strtol(binary_holder, NULL, 2); 

    if (char_set > 31 && char_set != 127){ 
     data[n++] = char_set; 
    } 


    } 

我忘了提,這個問題是在這裏,我不能弄清楚爲什麼

data[n++] = char_set;

+2

向我們展示'data'的詳細信息 –

+1

什麼是'n',它的初始值是多少? – xxbbcc

+0

爲什麼你三次調用相同的函數?什麼是數據[],它在哪裏定義? – wildplasser

回答

3

看起來像ascii(back_data[i], phr);第一個參數是char而不是指向char的指針。這個非指針傳遞給strlen() —繁榮。

+0

我真的不明白你能解釋一下嗎? – Ali

+0

要真正解釋一下,你能否給我們申報'back_data'? – Jens