【问题标题】:How to use fscanf to obtain numbers with more than one delimiter?如何使用 fscanf 获取具有多个分隔符的数字?
【发布时间】:2015-10-18 08:47:59
【问题描述】:

我是使用 c 工作的新手。我有一个格式如下的文件:

number:number,number,number

无论如何我可以使用fscanf 从文件中获取数字吗?

我下面的代码不起作用:

fscanf(file,"%d%[^:]:%d%[^,],%d%[^,],%d",&one,something,&two,something3,&three,something4,&four); 

【问题讨论】:

  • 扫描整行,然后改用strtok
  • @barakmanos 我需要使用 fscanf 进行锻炼。

标签: c delimiter scanf


【解决方案1】:

你不需要%[^:] 部分,你可以直接将分隔符放入格式字符串中:

int a, b, c, d;
while (scanf("%d:%d,%d,%d",&a,&b,&c,&d) == 4) {
    printf("%d %d %d %d\n", a, b, c, d);
}

Demo.

【讨论】:

  • 效果很好!非常感谢这个人!在什么情况下我们必须使用我试图放入的“%[^:]”?还是根本不需要?
  • @Vimzy %[^...] 格式用于读取字符串。您可以在% 之后使用星号来跳过相应的输入。但是,通常在读取数字时不需要,因为scanf 会自动跳过空格。
  • @Vimzy 考虑 "1: 2 , 3, 4" 这里有一个额外的空格 before 逗号分隔 scanf.
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-07-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-05-08
  • 2018-01-15
  • 2022-01-13
相关资源
最近更新 更多