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言語で文字列・数値変換を行う方法でした。
