2012年2月23日木曜日

10進文字列を整数に

ちょっと実験コードで文字列を整数に変換する必要があったので
便利な関数が用意されてるような気もしたのだけど
探すのもめんどくさいので作ってみました

int S2I(const char *str) {
    int i = 0;
    for ( ; *str != '\0'; i = (i * 10) +  (*str++ - '0'));
    return i;
}
こんな感じ
引数で文字列を受け取って
forで\0になるまでiに加算していく

とりあえずデバッグで使いたかっただけなので
手っ取り早く実装してしまいましたが
ちゃんと使いたいならまじめに実装すべき

↑のコードだと
例えば
char data[] = "12345";
int i;
i = S2I(data);
はi = 12345;と同じ動作ですが
char data[] = "12345\n";
int i;
i = S2I(data);
の場合はi == 123412となります

あと10進数限定
16進とか渡しちゃダメです

とりあえずCでデバッグに使いたいとかなら便利かもしれない
C#? int.Parseで良いじゃん(´・ω・`)

C#は色々と便利なんですけどね
C#使うとCが使えなくなっちゃうorz

0 件のコメント:

コメントを投稿