繁体   English   中英

c fscanf按模式保存

[英]c fscanf save by pattern

这是我试图分开的线,从开始直到: ,吃任何空格,从那里开始:

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

首先,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
while(fscanf(fp,"%[^:]: %s",map[i].name, map[i].filesNeeded) == 2)
{
   printf("%s %s\n",map[i].name, map[i].filesNeeded);
   i++;
}

我修改了代码。你可以尝试一下这样的代码。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM