2015-10-18 30 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

相关问题