Cプログラミング
 Computer >> コンピューター >  >> プログラミング >> Cプログラミング

C/C++のstrtod()関数とは?文字列をdouble型に変換する方法を解説

C言語およびC++で使用できるstrtod()関数は、文字列を浮動小数点数(double型)に変換するための標準ライブラリ関数です。変換が成功した場合は変換後の数値を返し、失敗した場合は0を返します。この関数を使用するには、ヘッダーファイル「stdlib.h」をインクルードする必要があります。

strtod()関数の構文

double strtod(const char *string, char **endpointer);

各引数の意味は以下の通りです。

string − 変換対象となる文字列へのポインタです。

endpointer − すでに確保されているオブジェクトへのポインタです。関数の実行後、数値部分の直後にある次の文字の位置がここに格納されます。これにより、数値以降の残りの文字列を簡単に取得できます。

strtod()関数の使用例

以下は、strtod()関数を使って文字列をdouble型の数値に変換するサンプルプログラムです。

サンプルコード

#include <stdio.h>
#include <stdlib.h>
int main () {
    char s[20] = "8.28 is a number";
    char *p;
    double result;
    result = strtod(s, &p);
    printf("The number after conversion of string : %lf", result);
    return(0);
}

実行結果

The number after conversion of string : 8.280000

プログラムの解説

上記のプログラムでは、まずchar型の配列 s[20] を宣言し、「8.28 is a number」という数字と英字が混在した文字列で初期化しています。

char s[20] = "8.28 is a number";
char *p;
double result;
result = strtod(s, &p);

その後、strtod()関数を呼び出すことで、文字列の先頭から読み取れる数値部分「8.28」がdouble型の数値に変換され、変数 result に格納されます。ポインタ p には、数値の直後にあるスペースの位置が設定されるため、必要に応じて残りの文字列「is a number」を参照することも可能です。

まとめ

strtod()関数は、ユーザー入力やファイルから読み込んだ文字列データを数値として扱いたい場合に非常に便利な関数です。変換の成否は戻り値とendpointerの状態を確認することで判断でき、atof()関数と異なりエラー検出や部分的な文字列処理にも対応できる点が特徴です。

  1. C/C++で実装するナンバーリンクパズル ― ランダム盤面生成アルゴリズムの徹底解説

    ナンバーリンクとは?ナンバーリンクは、n×n のマス目からなる盤面を使って遊ぶパズルです。盤面上のマスは「空きマス」と「塗りつぶし(障害物)マス」に分かれており、さらに一部の空きマスには「1、2、3…」という整数が割り当てられています。各整数は必ず盤上の異なる2つのマスに置かれており、プレイヤーの課題は、同じ数字同士を縦横移動のみで進む単純経路(一本道)で結ぶことです。その際、次のルールを守る必要があります。異なる経路同士は交差してはならないどの経路も塗りつぶしマスを通ってはならない最終的に、すべての空きマスがいずれかの経路で埋め尽くされていることランダムな問題を生成するアルゴリズムここでは、

  2. C/C++のsystem()関数とは?使い方と実行例を徹底解説

    この記事では、C/C++におけるsystem()関数の基本的な使い方と動作について、具体例を交えながら詳しく解説します。 system()関数は、C/C++標準ライブラリに含まれる関数の一つです。オペレーティングシステムのコマンドプロセッサ(コマンドプロンプト)やターミナルで実行可能なコマンドをプログラムから渡して実行でき、コマンドの処理が完了すると制御をプログラムに戻します。 この関数を使用するには、ヘッダーファイル<stdlib.h>(C++の場合は<cstdlib>)をインクルードする必要があります。 構文 system()関数の構文は以下の通りです。 int