Cで文字列をlong longに変換するにはどうすればよいですか?
私が持っている
char* example = "123";
例を long long に変換したいので、次のようなものが必要です
long long n = example;
これどうやってするの?
関数を使用しますstrtoll
:
#include <stdlib.h>
#include <errno.h>
char const * example = "123";
char * e;
errno = 0;
long long int n = strtoll(example, &e, 0);
if (*e != 0 || errno != 0) { /* error, don't use n! */ }
実際、e
は変換されたシーケンスの次の文字を指すため、これを使用してさらに洗練された解析を行うことができます。現状では、シーケンス全体が変換されたことを確認するだけです。errno
オーバーフローが発生したかどうかを調べることもできます。詳しくはマニュアルをご覧ください。
(歴史的な関心のために:long long int
とstrtoll
は C99 で導入されました。それらは C89/90 では使用できません。ただし、同等の関数strtol
/ strtoul
/strtod
は存在します。)