便利な関数が用意されてるような気もしたのだけど
探すのもめんどくさいので作ってみました
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
こんな感じ
引数で文字列を受け取って
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 件のコメント:
コメントを投稿