这是我试图分割的一条线,从开始到:
,吃掉任何空格,然后从那里开始:
file1: file2,file3,file4
我的代码是:
while(fscanf(fp,"%s: %s",map[i].name, map[i].filesNeeded) == 1)
{
printf("%s %s\n",map[i].name, map[i].filesNeeded);
i++;
}
永远不会保存第二个参数。结果是:
file1:
file2,file3,file4
而不是:
file1 file2,file3,file4
答案 0 :(得分:3)
首先,fscanf会增加匹配的每个项目的回报,因此它应该是== 2.
此外,您将需要使用%[^:]而不是%s,因为%s将不知道何时停止。
int main(int argc, char** argv)
{
char test[] = "one: two,three";
char part1[20];
char part2[20];
printf("%i\n", sscanf(test, "%[^:]: %s", part1, part2));
printf("%s %s\n", part1, part2);
}
输出:
2
one two,three
答案 1 :(得分:0)
while(fscanf(fp,"%[^:]: %s",map[i].name, map[i].filesNeeded) == 2)
{
printf("%s %s\n",map[i].name, map[i].filesNeeded);
i++;
}
我修改了代码。你可以尝试一下。