日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學無先后,達者為師

網站首頁 編程語言 正文

C語言實現字符串轉浮點函數的示例_C 語言

作者:嵌入式@hxydj ? 更新時間: 2022-04-23 編程語言

??字符串不僅可以轉換為整數,也可以轉換為浮點數,字符串轉浮點數函數原型如下:

     float __cdecl __mingw_strtof (const char * __restrict__, char ** __restrict__);
     double __cdecl __mingw_strtod (const char * __restrict__, char ** __restrict__);

??strtof函數返回值是一個單精度浮點數,strtod返回值是一個雙精度浮點數。

??首先來看strtof函數,它的參數有兩個。第一個參數指向要解釋的以空字符結尾的字節字符串。第二個參數指向數字后的第一個字符。

??該函數首先丟棄盡可能多的空白字符,直到找到第一個非空白字符為止。然后從該字符開始,采用與浮點字面量類似的語法,盡可能多地使用有效的字符,并將其解釋為數值。指向最后一個有效字符之后的字符串其余部分的指針存儲在函數第二個參數中。

有效的浮點值可以是以下值之一:

十進制浮點表達式。它由以下部分組成:

  • (可選)加號或減號
  • 非空十進制數字序列可選地包含小數點字符(由當前C確定locale)(定義有效數字)
  • (可選),e或者E跟隨可選的負號或加號和非空序列的十進制數字(定義指數)

二進制浮點表達式。它由以下部分組成:

(可選)加號或減號

  • 0x0X
  • 非空的十六進制數字序列可選地包含小數點字符(由當前C確定locale)(定義有效數字)
  • (可選),p或者P跟隨可選的負號或加號和非空序列的十進制數字(定義指數)

無窮大表達式。它由以下部分組成:

  • (可選)加號或減號
  • INF或者INFINITY無視事件

非數字表達式。它由以下部分組成:

  • (可選)加號或減號
  • NANNAN(char_sequence)忽略該NAN部分的情況。char_sequence只能包含字母數字字符。結果是靜態的NaN浮點值。

任何其他可能被當前安裝的C接受的表達式 locale

??下面通過一個簡單的例子演示strtof函數的用法。

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char** argv)
{
	char str[30] = "-123.456    5.672451e3  acde";
	char *pEnd;
	float ret1,ret2;

	ret1 = strtof(str, &pEnd);
	ret2 = strtof(pEnd, &pEnd);
	printf("數字1是: %.3f\n", ret1);
	printf("數字2是: %.3f\n", ret2);
	printf("字符串部分是: %s \n", pEnd);

	return 0;
}

??代碼運行結果如下:

image.png

??在轉換數字的過程中,遇到空白字符函數就會退出。同時函數的第二個參數會存儲退出的位置,當再次調用函數的時候,就會接著上次退出的位置繼續轉換。

strtod函數和strtof函數用法基本一樣,可以直接在上面程序的基礎上修改。

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char** argv)
{
	char str[30] = "-123.456   5.672451e3  acde";
	char *pEnd;
	double ret1,ret2;

	ret1 = strtod(str, &pEnd);
	ret2 = strtod(pEnd, &pEnd);
	printf("數字1是: %lf\n", ret1);
	printf("數字2是: %lf\n", ret2);
	printf("字符串部分是: %s \n", pEnd);
        
	return 0;
}

??將返回值的類型修改為double類型就可以了,執行結果如下:

image.png

原文鏈接:https://blog.csdn.net/qq_20222919/article/details/122975526

欄目分類
最近更新