2015-10-18 61 views
1

我是與c合作的全新品牌。我有以下格式樣式文件:如何使用fscanf獲取具有多個分隔符的數字?

number:number,number,number 

反正我有可以使用fscanf獲得從該文件中的數字?

下面我的代碼無法正常工作:

fscanf(file,"%d%[^:]:%d%[^,],%d%[^,],%d",&one,something,&two,something3,&three,something4,&four); 
+0

掃描整行,然後使用'strtok'代替。 –

+0

@barakmanos我需要使用fscanf進行鍛鍊。 – Vimzy

回答

4

你不需要%[^:]部分在那裏,你可以把分隔符爲格式字符串直接:

int a, b, c, d; 
while (scanf("%d:%d,%d,%d",&a,&b,&c,&d) == 4) { 
    printf("%d %d %d %d\n", a, b, c, d); 
} 

Demo.

+0

完美運作!非常感謝你!我們將不得不使用我試圖放在那裏的「%[^:]」的情況是什麼?或者那根本就不需要? – Vimzy

+2

@Vimzy'%[^ ...]'格式用於讀取字符串。您可以在'%'後面使用星號來跳過相應的輸入。但是,當你讀取數字時通常不需要,因爲'scanf'會自動跳過空格。 – dasblinkenlight

+0

@Vimzy考慮「1:2,3,4」這裏有一個額外的空間_before_逗號分隔了'scanf'。 – Matt

相關問題