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

时间:2013-12-08 05:44:43

标签: c file field scanf

我如何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++;
}

1 个答案:

答案 0 :(得分:6)

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

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

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

Demo on ideone.