2014-01-07 126 views
1

快速問題:我正在使用.conf文件中的數據連接到Gameserver;我使用sscanf來解析整個文件,我們應該忽略空格,但爲了測試我的程序效率,我掏出了Port-number行上的所有空格,一個voilà,它不再工作了...... The原始格式在.conf文件中只是普通的Portnumber = XXXX;我如何使sscanf()排除等號?格式說明符在C中排除'='

sscanf(line, "%s = %s", parameter_name, parameter_value); 
    debug(parameter_name); 
    debug(parameter_value); 

和PARAMETER_NAME只是保存整條生產線一次......我試着用

sscanf(line, "%s %[^=]s", parameter_name, parameter_value); 

讓他保存第二個參數,而使用其他一切拋開了:我如下使用它'=',但它不工作...任何人有一個想法?我似乎無法在網絡上找到格式說明標籤的真正的完整列表...

歡呼

回答

0

man scanf應該給你標識符及其說明的完整列表。

反正不關你嘗試的工作,因爲直到它找到一個空白的第一%s會吃的一切。這是默認行爲。您需要在第一個格式說明符中使用%[^=]

sscanf(line, "%[^= ] = %s", parameter_name, parameter_value); 
+0

謝謝!但是,現在第二個char數組沒有被存儲在parameter_value變量中。 –

+0

@SpadeJohnsson你有=嗎之間的空格嗎? –

+2

不應該是'sscanf(line,「%[^ =] =%s」,...)'? –