C言語で文字列・数値変換を行う方法

記事内に広告が含まれています。

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

スポンサーリンク
スポンサーリンク
【PR】
C言語学習におすすめの本
C言語
スポンサーリンク
タイトルとURLをコピーしました