[英]Reading floating point numbers
我正在嘗試讀取浮點數(命令行輸入)。 這是正確的方法嗎?
sscanf(argv[i], "%f", &float)
將sscanf()
與argv
元素一起使用是從命令行參數中提取float
一種方法。 您還應該檢查返回值,以查看float
是否實際上是從字符串中提取出來並存儲到變量中的。
也許更好的方法是使用strtod()
,因為您可以使用第二個參數執行更好的驗證。 您可以使用該指針檢查轉換中使用的最后一個字符是否為字符串中的最后一個字符。 即。 您可以檢查"3.5abc"
包含有效的浮點數,但整個字符串不是一個有效的浮點數。
如果命令行輸入的意思是從stdin
讀取輸入,那么這與argv
無關,而應該使用scanf()
或fgets()
+ strtod()
。
請注意,還有atof
函數,該函數本質上是strtod
的版本,沒有提供額外的錯誤檢查功能。 從手冊頁來看只是: strtod(nptr, (char **) NULL);
。 C99還提供了strtof()
函數,該函數返回float
而不是double
。 您可以為float
分配一個double
並對其進行隱式轉換,因此不要認為使用strtod()
會引起問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.