C言語 PR

【C言語】文字列を数値に数値を文字列に変換する

記事内に商品プロモーションを含む場合があります

この記事では、C言語で文字列を数値に数値を文字列に変換する方法を解説します。

文字列を数値に変換することで演算に使うことができ、数値を文字列に変換することで桁数を取得できたりfor文を使って桁ごとに処理できたりします。

それでは、変換する方法を見ていきましょう!

文字列を数値に変換する

文字列から数値型に変換するには以下のような関数を使います。

stdlib.h のインクルードが必要です

文字列 から 整数

atoi 文字列を int型 に変換
atol 文字列を long型 に変換
atoll 文字列を long long型 に変換

文字列 から 浮動小数点数

atof 文字列を double型 に変換

試しに文字列を数値に変換して出力してみます。

#include <stdio.h> #include <stdlib.h> int main(void){ // 変換する文字列 char s[] = "10"; // 整数に変換 int i = atoi(s); long l = atol(s); long long ll = atoll(s); printf("int: %d\n", i); printf("long: %ld\n", l); printf("long long: %lld\n", ll); // 浮動小数点数に変換 double d = atof(s); printf("double: %f\n", d); }

実行結果

int: 10 long: 10 long long: 10 double: 10.000000

文字列に数値に変換できない文字が含まれている場合0が返される。

#include <stdio.h> #include <stdlib.h> int main(void){ // 数値に変換できない文字を含んだ文字列 char s[] = "t10"; // 整数に変換 int i = atoi(s); long l = atol(s); long long ll = atoll(s); printf("int: %d\n", i); printf("long: %ld\n", l); printf("long long: %lld\n", ll); // 浮動小数点数に変換 double d = atof(s); printf("double: %f\n", d); }

実行結果

int: 0 long: 0 long long: 0 double: 0.000000

数値を文字列に変換する

数値型を文字列に変換するには snprintf()関数を使うと簡単です。

int snprintf(char * restrict s, size_t n, const char * restrict format, ...);

第一引数に結果を格納する文字列、第二引数に終端文字を含めた文字列の長さ、第三引数に変換する数値に対応した変換指定子、それ以降に変換する数値を指定します。

#include <stdio.h> int main(void){ // 変換した文字列を格納する変数 char buf[8]; // 変換する int型 の値 int i = 1234567; // int を 文字列 に変換 snprintf(buf, 8, "%d", i); // 出力 printf("%s\n", buf); }

実行結果

1234567

文字列の末尾には終端文字が格納されるので文字数に注意してください。文字数をピッタリ指定していると 1文字切れてしまう。

#include <stdio.h> int main(void){ // 変換した文字列を格納する変数 char buf[4]; // 変換する int型 の値 int i = 1234; // int を 文字列 に変換 snprintf(buf, 4, "%d", i); // 出力 printf("%s\n", buf); }

実行結果

123

また、複数の数値をまとめて変換することもできる。

#include <stdio.h> int main(void){ // 変換した文字列を格納する変数 char buf[16]; // 変換する数値 int i = 1234; long l = 5678; // 文字列 に変換 snprintf(buf, 16, "%d %ld", i, l); // 出力 printf("%s\n", buf); }

実行結果

1234 5678

まとめ

この記事では、C言語で文字列を数値に数値を文字列に変換する方法を解説しました。

数値から文字列への変換、または文字列から数値に変換するのに通常のキャストは行えないので注意しましょう!

それでは今回の内容はここまでです。ではまたどこかで〜( ・∀・)ノ