C言語では数値と文字列は互換性がないため、それぞれ変換してあげる必要があります。
そこで今回は、数値を文字列に変換する方法を紹介します。
数値を文字列に変換する際にゼロ埋めする方法も合わせて紹介していきます。
目次から探す
数値を文字列に変換する方法
C言語で数値を文字列に変換する方法ですが、実はsprintf関数
を使うことで簡単に変換できます。
int sprintf(char *str, const char *format, [arg1, arg2, ... ])
簡単に言うとprintf
で画面に表示する文字列を変数に代入できる関数です。
フォーマットの指定方法などもprintf関数
と同じで、第一引数を除けば全て同じです。
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int main() {
char str[BUFSIZ];
int num = 1234;
sprintf(str,"%d",num);
return 0;
}
(文字列を代入する変数,フォーマット,文字列に変換する数値)
という引数でsprintf関数
を呼び出せば、一行で数値を文字列化できます。
指定桁数でゼロ埋めする場合
sprintf関数
を使えるおかげで、ゼロ埋めした上での文字列化も簡単に実装できます。
やり方は簡単で%d
とするところを%08d
のように先頭に0
を付けた上で桁数を指定するだけです。
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int main() {
char str[BUFSIZ];
int num = 1234;
sprintf(str,"%08d",num);
printf("%s",str);
return 0;
}
上記プログラムだと、1234
が00001234
に変換されています。
ループ文を書いたりしてややこしくする必要がないので、数値を文字列に変換する際はsprintf関数
を使うといいでしょう。
【おまけ】文字列から数値に変換
文字列から数値に変換できます。
この場合はatoi関数
、小数を含む場合はatof関数
を使えば一行で記述可能です。
#include<stdlib.h>
int main() {
char str1[] = "1234";
char str2[] = "3.14";
int num1 = atoi(str1);
double num2 = atof(str1);
return 0;
}
意外と便利なので変換が必要なときは使いましょう。