2012-05-16 3 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); первый arg является символом вместо указателя на символ. Этот не указатель передается в strlen() — стрела.

+0

Я действительно не понял, вы можете немного объяснить? – Ali

+0

Чтобы действительно объяснить это, можете ли вы дать нам объявление 'back_data'? – Jens

Смежные вопросы