Вызов binval
в main
неявно объявляет его как int binval(int)
.
Чтобы это исправить, вам нужно либо добавить предварительное объявление для binval
, либо переместитьmain
до после binval
.
После этого и после исправления других вещей, упомянутых в других ответах, у нас все еще остается одна маленькая проблема: биты будут распечатаны в обратном направлении, потому что вы печатаетенаименее значимый бит первым.Самый простой способ исправить это - переключить binval
и printf
внутри самой функции binval
, но, конечно, вы, вероятно, не захотите, чтобы базовый случай (num == 0) печатал новую строку.Просто напечатайте новую строку после вызова функции из main
.