Неверный вывод printf - C (СИ)
Формулировка задачи:
Доброго времени суток. Код
где
получается:
byte_to_binary(i) return "0000"
byte_to_binary(sbox1(i)) return "0101"
Почему на экран выводит только "0000 0000" ???
Видимо я чего то не знаю...
printf("%s %s\n",byte_to_binary(i), byte_to_binary(sbox1(i)));
const char *byte_to_binary(int)
Решение задачи: «Неверный вывод printf»
textual
Листинг программы
const char *byte_to_binary(int x) { int i; static char b[4]; b[0] = '\0'; for (i = 8; i > 0; i >>= 1) strcat(b, ((x & i) == i) ? "1" : "0"); return b; }; int sbox1(int x) { int sbox1[2][8]={ // 000 001 010 011 100 101 110 111 { 5, 2, 5, 3, 1, 6, 7, 1}, //0 { 7, 4, 4, 2, 3, 5, 6, 3} //1 }; return sbox1[x>>3&0x1][x&0x7]; }; int main() { i=0; printf("%s %s \n",byte_to_binary(i), byte_to_binary(sbox1(i))); return 0; }
Объяснение кода листинга программы
- В функции
byte_to_binary
происходит преобразование целого числа в двоичное представление и возвращается указатель на строку. - В функции
sbox1
происходит использование S-box (подстановочная таблица) для замены части двоичного представления числа на другое число. - В функции
main
создается переменнаяi
со значением 0 и выводится двоичное представление числа 0 и результат применения S-box к этому числу. - В данном коде возможно неверное использование функции
printf
для вывода строки и указателя на строку, так как требуется использовать функциюprintf
с форматом%s
для вывода указателя на строку.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д