2011-03-29 35 views
2

這是一個非常基本的問題,但我的C非常非常生鏽,我需要進行一次複習。我有一個總是完全一樣的字符串:di ###.# ###.# ###將C字符數組讀取爲雙打

我想把第一個數字改成d1,第二個變成d2,第三個變成d3

int main() 
{ 
    double d1, d2, d3; 
    char mystring[] = "di 123.4 567.8 901"; 

    //some code that I don't know 

    return 0; 
} 

你們能幫我嗎?我明白strtod()可以幫助解析數字,但是我怎樣在開始時跳過「di」?

+0

檢查是否有幫助http://www.cplusplus.com/reference/clibrary/cstdio/sscanf/ – 2011-03-29 18:49:35

回答

11

您可以使用sscanf

sscanf(mystring, "di %lf %lf %lf", &d1, &d2, &d3); 

在這一行,你給一個格式字符串(基本上奠定了您預期的數字來定),然後提供你想要的變量的地址結果將被放入,以便。 &運營商採用任何應用的地址,在這種情況下,您的地址是d1d2d3變量。

The reference supplied是一個C++的網站,但此功能)

+0

'%L'是格式爲'long double' - OP的代碼使用'double'。我認爲'%lf'就是你想要的。 – 2011-03-29 18:12:10

+0

擊敗了我,包括鏈接到cplusplus。 +1。 – Tim 2011-03-29 18:12:59

+0

@Carl:啊,是的,謝謝。我只是在參考文獻中對「double」進行控制。 ;) – 2011-03-29 18:13:16