是否可以使用sscanf
在下面的示例中讀取字符串s
作爲兩個10個字符(包括空格)的寬浮點數?或者我必須將10個字符的塊複製到臨時字符數組,並在該臨時數組上使用sscanf
?用sscanf從char字符串中讀取一個固定寬度的浮點數
#include <stdio.h>
int main(int argc, const char* argv[])
{
char s[]={" 6.4887.0522e+06"};
float f1, f2;
sscanf(s, "%10f%10f", &f1, &f2);
printf("%10f %10f\n", f1, f2);
}
我在這個例子中的願望是從sscanf
讀得f1 = 6.448
和f2 = 7052200.
。
如果我們假設這僅僅是一個例子,並且您希望有一個解析這些數據的通用算法,那麼答案就取決於數據格式中的常量。 (例如,點總是4的長度後的數字組?)。一般來說,你可以用字段寬度來停止在一個數字中間,但是@ user3121023表示,空格不計算在內。 –
謝謝,但我顯然不夠清楚。字符數組應該總是被解析爲長度爲10個字符的組。所以我的例子中的第一個子字符串是「6.488」,第二個字符串是「7.0522e + 06」。問題不在於只讀取這個特定的字符串。我正在尋找一種通用的方法來讀取這種類型的數據,其中每個10字符的子字符串可以包含以有效浮點格式格式化的任何種類的浮點值。 – Anders
你可以拆分數組:https://ideone.com/CGgtUj – mch