printf() och scanf() stödjer inte binärt, bara oktalt, decimalt och hexadecimalt. Iaf inte i standarden, men jag tror att det finns extensions för det i kompilatorer, t.ex. i gcc.
För konvertering
från sträng kan du använda
strtoul() eller nån annan av de funktionerna, med 2 som sista argument (basen). För konvertering
till sträng finns det nog ingen funktion, utan man måste göra det manuellt. Siffrorna kommer i omvänd ordning, så antingen får du skriva dem till strängen så och skriva en strrev()-funktion som du använder på den efteråt, eller (mycket snabbare) börja från slutet av strängen och gå mot början. Problemet blir att veta var slutet är. Om du vill ha ett exakt antal siffror (och fylla ut med nollor i början) är det inga problem, men om du bara vill ha så många siffror som finns i talet lär du nog antingen returnera en pekare till en bit in i buffern, eller köra en memmove() efteråt.
Kod:
ptr = buf + bufSize; /* peka till bortom strängbuffern */
*--ptr = '\0';
do {
*--ptr = '0' + num % base;
} while (num /= base);
return ptr; /* eller memove() från ptr till buf */
I C++ kanske det finns enklare sätt.