TOP - C言語 - stdlib.h - strtof()

引数で指定される文字列の最初の数値表記部分をfloat型に変換します。
「0x」または「0X」で始まる場合は16進数として変換されます。
「e」、「E」で始まる部分は10進数の指数部分として変換されます。
また、「p」、「P」で始まる部分は10進数の指数部分として変換されます。

戻り値1 = strtof(引数1 , 引数2)

戻り値1 : float
          引数1の最初の数値表記部分を変換した値
          変換が実行されない場合は0
引数1   : char *
          変換対象となる文字列へのポインタ
引数2   : char **
          変換された部分の次の文字へのポインタへの参照

(例)
#include <stdio.h>
#include <stdlib.h>

int main ()
{
    char *pc;

    printf("変換結果(strtof) : %f\n", strtof("123", (char **)NULL));
    printf("変換結果(strtof) : %f\n", strtof("123.5", (char **)NULL));
    printf("変換結果(strtof) : %f\n", strtof("0xa00", (char **)NULL));
    printf("変換結果(strtof) : %f\n\n", strtof("-345.6", (char **)NULL));
    
    printf("変換結果(strtof) : %f\n", strtof("123.5abc", &pc));
    printf("変換後の次の文字 : %s\n\n", pc);

    printf("変換結果(strtof) : %f\n", strtof("abc123.5", &pc));
    printf("変換後の次の文字 : %s\n\n", pc);

    printf("変換結果(strtof) : %f\n", strtof("1.2e+5abc", &pc));
    printf("変換後の次の文字 : %s\n\n", pc);
    
    printf("変換結果(strtof) : %f\n", strtof("0xa.0p+1abc", &pc));
    printf("変換後の次の文字 : %s\n\n", pc);

    return 0;
}

実行結果
変換結果(strtof) : 123.000000
変換結果(strtof) : 123.500000
変換結果(strtof) : 2560.000000
変換結果(strtof) : -345.600006

変換結果(strtof) : 123.500000
変換後の次の文字 : abc

変換結果(strtof) : 0.000000
変換後の次の文字 : abc123.5

変換結果(strtof) : 120000.000000
変換後の次の文字 : abc

変換結果(strtof) : 20.000000
変換後の次の文字 : abc


Copyright(C) 2006-2018 CLAYPOT. All Rights Reserved.