Last Update: Jan.10,2001

C Source Library

「LSI C-86 Ver.3.30c 試食版」、「Borland C++ 5.5」でコンパイル出来ます。

■ 10進数を2進数で表示するサンプル

/*
 *  tobin.c : 10進数を2進数で表示する
 *
 *  Copyright (c) 2000 AOK. 
 *
 */

#include <stdio.h>
#include <string.h>
#include <limits.h>
#include <stdlib.h>

#define MAXBUF  9
#define MAXCMD  128

/* ストリームから文字列を得る */
void input(char *buf, int size)
{
    char temp[MAXCMD+1];
    int i;
    if (fgets(temp, MAXCMD+1, stdin) != NULL)
    {
        for (i = 0; temp[i] != '\0'; i++) {
            if (temp[i] == '\n') {
                temp[i] = '\0';
                break;
            }
        }
        strncpy(buf, temp, size);
        *(buf+size) = '\0';
    }
    else
        *buf = '\0';
}

/* 2進数で表示 */
void tobin(int base)
{
    int i, bit;
    bit = sizeof(int) * 8;
    printf("%6d -> ", base);
    for (i = bit-1; i >= 0; i--) {
        printf("%u", (base >> i) & 1);
        if (!(i % 4))
            putchar(' ');
    }
    putchar('\n');
}

/* プログラムのメイン */
int main()
{
    char buf[MAXBUF+1];
    int n;
    
    while (1) {
        puts("\n>任意の数を入力して下さい.(終了:Q or q)");
        printf("(%d ~ %dの範囲): ", INT_MIN, INT_MAX);
        input(buf, MAXBUF);
        if (strcmpi(buf, "q") == 0)           
            break;
        putchar('\n');
        n = atoi(buf);
        tobin(n);
    }

    return 0;
}