每当我处于for / while循环中时,如何从头开始使用fscanf?

时间:2019-01-29 15:36:26

标签: c

在每次进入for循环时,如何从头开始使用fscanf?

我想做这样的事情:

 for(i=0; i<5; i++)
      while(fscanf(in, "%d", &number)
            .......

基本上,当我第一次使用fscanf时,它将从文件的开头开始扫描。我希望每次for循环完成后都能从头开始工作,该怎么办?

1 个答案:

答案 0 :(得分:3)

使用UPDATE wp_tickets_regenerated INNER JOIN wp_tickets ON wp_tickets_regenerated.lottery_id = wp_tickets.lottery_id SET wp_tickets_regenerated.user_id = wp_tickets .user_id, wp_tickets_regenerated.full_name = wp_tickets .full_name, wp_tickets_regenerated.answer_id = wp_tickets .answer_id, wp_tickets_regenerated.order_id = wp_tickets .order_id WHERE wp_tickets_regenerated.lottery_id = wp_tickets.lottery_id' 返回文件的开头:

rewind()

但是请注意,此解决方案仅在可搜索流的情况下有效。如果它绑定到由for (i = 0; i < 5; i++) { rewind(in); while (fscanf(in, "%d", &number) ....... 打开或通过shell重定向打开的常规文件,则它应该是可搜索的,但是如果它绑定到终端,管道或其他字符设备,fopen可能会失败。您无法使用rewind()对此进行测试,但这是一种替代方法:

rewind()

一种更可靠的方法是保存if (fseek(in, 0L, SEEK_SET)) { fprintf(stderr, "cannot rewind inut stream\n"); exit(1); } 读取的值,以避免寻找。