带冒号(:)分隔数据的fscanf

我如何fscanf这段数据? 数据和分隔符之间没有空行是':'

 VS1234567890654327:Rob Fordfirst:001:200 VS1234567890654312:Steven Harper:200:010 

我的代码

 while(3==fscanf(filename, "????", &string[size], &name[size], &number1[size], &number2[size])) { //printf("%s - %s - %.3d - %.3d", string[size], name[size], number1[size], number2[size])); size++; } 

您可以将分隔符作为格式的一部分包含在fscanf ,如下所示:

 while (4 == fscanf(filename, "%[^:]:%[^:]:%d:%d", string[size], name[size], &number1[size], &number2[size])) { ... } 

请注意使用%[^:]格式说明符。 它说“除了':'之外':'任何字符都被接受”。 另请注意, char*参数在没有&符号的情况下传递,因为它们已经是指针。

在ideone上演示。