1

这是我试图拆分的行,从开始到:,吃掉任何空格,然后从那里开始:

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
4

2 回答 2

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
于 2012-11-13T07:56:53.157 回答
0
while(fscanf(fp,"%[^:]: %s",map[i].name, map[i].filesNeeded) == 2)
{
   printf("%s %s\n",map[i].name, map[i].filesNeeded);
   i++;
}

我修改了代码,你可以试试看。

于 2012-11-13T09:54:32.407 回答