基数で割ったときの余りを逆から読むという、基本に忠実なやり方。
#include <stdio.h> void dec2bin(unsigned int val, char *str) { int count, i; char buf[33]; for( count = 0; val != 0; val /=2, count++) if(val%2) buf[count] = '1'; else buf[count] = '0'; str[count] = '\0'; for(i = 0; count>0; i++, count--) str[i] = buf[count-1]; } int main(int argc, char** argv) { int val; char str[33]; printf("Please input integer>"); scanf("%d", &val); dec2bin( (unsigned int)val, str); printf("%s\n", str); }