2013年4月11日木曜日

開発環境

プログラミング言語C 第2版 ANSI規格準拠 (B.W. カーニハン D.M. リッチー (著)、 石田 晴久 (翻訳)、共立出版)の第2章(データ型・演算子・式)、2.7(型変換)の演習 2-3を解いてみる。

その他参考書籍

演習 2-3.

コード

sample.c

#include <stdio.h>

int htoi(char s[]);

int main()
{
    printf("%d\n", htoi("5b"));
    printf("%d\n", htoi("5B"));
    printf("%d\n", htoi("0x5b"));
    printf("%d\n", htoi("0x5B"));
    printf("%d\n", htoi("0X5b"));
    printf("%d\n", htoi("0X5B"));
    return 0;
}

int htoi(char s[])
{
    int n, i;
    
    i = 0;
    if (s[i] == '0') {
        ++i;
        if (s[i] == 'x' || s[i] == 'X')
            ++i;
    }
    
    n = 0;
    for (i = 0; s[i] != '\0'; ++i) {
        if (s[i] >= '0' && s[i] <= '9')
            n += n * 16 + (s[i] - '0');
        else if(s[i] >= 'a' && s[i] <= 'f')
            n = n * 16 + ((s[i] - 'a') + 10);
        else if(s[i] >= 'A' && s[i] <= 'F')
            n = n * 16 + ((s[i] - 'A') + 10);
    }
    return n;
}

入出力結果(Terminal)

$ ./a.out
91
91
91
91
91
91
$

0 コメント:

コメントを投稿