C言語では文字列を数値に変換、または逆の数値から文字列に変換する関数(標準関数)が定義されています。
- 文字列を数値に変換double atof(char *str);
int atoi(char *str);
long atol(char *str); - 数値から文字列に変換
char* itoa(int value, char* str, int radix);
char* ltoa(long value, char* str, int radix);
但しitoaとltoaは標準関数ではなく処理系(コンパイラー)によっては定義されていない場合があります。
C言語で文字列を数値に変換する方法
C言語で文字列を数値に変換するには標準関数の「double atof(char *str)、int atoi(char *str)、long atol(char *str)」を利用します。
#include <stdio.h> #include <stdlib.h> int main( int argc, char **argv ) { dspData() ; return 0 ; } void dspData() { char wk[ 1024 ]; int i = 0 ; strcpy( wk, "12345"); //データをコピー i = atoi( wk ) ; printf( "i=[%d]n", i ) ; return ; }
と「atoi関数」を利用します。
atoi関数を利用するには共通インクルードファイル「stdlib.h」が必要です。
実行結果は
i=[12345]
になります。
C言語で数値を文字列に変換する方法・itoa関数
C言語で数値を文字列に変換するには関数の「char* itoa(int value, char* str, int radix)、char* ltoa(long value, char* str, int radix)」を利用します。
#include <stdio.h> #include <stdlib.h> int main( int argc, char **argv ) { dspData() ; return 0 ; } void dspData() { char wk[ 1024 ]; int i = 0 ; i = 12345 ; itoa(i, wk , 10); printf( "wk=[%s]n", wk ) ; return ; }
と「itoa関数」を利用します。
実行結果は
wk=[12345]
になります。
itoa関数を利用するには共通インクルードファイル「stdlib.h」が必要です。
C言語で数値を文字列に変換する方法・itoa関数が使えない場合
C言語で数値を文字列に変換する場合で「char* itoa(int value, char* str, int radix)、char* ltoa(long value, char* str, int radix)」が利用できない処理系(コンパイラー)の場合はsprintf関数で変換を行います。
#include <stdio.h> #include <stdlib.h> int main( int argc, char **argv ) { dspData() ; return 0 ; } void dspData() { char wk[ 1024 ]; int i = 0 ; i = 12345 ; sprintf( wk, "%d", i ) ; printf( "wk=[%s]n", wk ) ; }
実行結果は
wk=[12345]
になります。
ここではsprintf関数の書式に「%d」を指定することで数値を文字列に変換することができます。
まとめ
C言語では文字列を数値に変換、または逆の数値から文字列に変換するにはatoiやitoaなどの関数(標準関数)を利用すれば簡単におこなうことができます。
万が一「itoa」などがない場合でも「sprintf」関数を利用すれば簡単に行うことができます。
以上、C言語で文字列・数値変換を行う方法でした。