Вы должны попробовать мой ответ на этот вопрос вчерашнего дня. Это решение будет работать, и первый метод должен быть очень быстрым, если вы пытаетесь разбить массив на шаги, потому что это небольшой массив.
Тем не менее, для этого кода основная проблема, с которой вы столкнулись в своем кодеявляется то, что вы пытаетесь удалить 4 индекса из массива char из 12 индексов, не делая ничего, чтобы сказать strtol (), что. Таким образом, в вашем коде вам нужно только указать strtol () остановиться на индексе 8, введя char '\ 0' в позицию 8 или массив, который будет 9-м символом. Кроме того, поскольку вы собираетесь пропустить индексы 0 и 1, нет смысла начинать с индекса 0 и оценивать, является ли он индексом 0 или 1. Вы можете начать с индекса 2. Кроме того, «i» должно быть меньше 12в вашей петле. Это потому, что последний индекс массива из 12 индексов будет 11, а не 12. Кроме того, j не обязательно должен быть символом. Это должно быть int.
char charToBin(char usersInput[]) {
int j = 0 ;
for (int i = 2; i < 12 ; i++) {
if( (i == 3) || (i == 7) ){
continue ;
} ;
usersInput[j] = usersInput[i] ;
j++ ;
} ;
usersInput[8] = '\0';
char c = strtol(usersInput, (char **)NULL, 2);
return c;
}