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

带有冒号(:)分隔数据的fscanf,c,file,field,scanf,C,File,Field,Scanf,如何fscanf查看这段数据?数据和delimeter之间没有空行是':' VS1234567890654327:Rob Fordfirst:001:200 VS1234567890654312:Steven Harper:200:010 我的代码 while(3==fscanf(filename, "????", &string[size], &name[size], &number1[size], &number2[size])) { //print

如何
fscanf
查看这段数据?数据和delimeter之间没有空行是
':'

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])) {
    ...
}
请注意
%[^:][/code>格式说明符的使用。它表示“接受除<代码>以外的任何字符:'
”。还请注意,
char*
参数在传递时没有带符号,因为它们已经是指针了


您可以将分隔符作为格式的一部分添加到
fscanf
,如下所示:

while (4 == fscanf(filename, "%[^:]:%[^:]:%d:%d", string[size], name[size], &number1[size], &number2[size])) {
    ...
}
请注意
%[^:][/code>格式说明符的使用。它表示“接受除<代码>以外的任何字符:'
”。还请注意,
char*
参数在传递时没有带符号,因为它们已经是指针了


谢谢!这很有帮助。像这样的数据文件呢<代码>荷兰阿尔伯特山路039号着陆点(大量空间)9.50 043号金钟维尔侧路,金钟维尔(大量空间)10.00谢谢!这很有帮助。像这样的数据文件呢<代码>荷兰阿尔伯特山路039号着陆点(大量空间)9.50 043号金钟维尔侧路,金钟维尔(大量空间)10.00