在每次进入for循环时,如何从头开始使用fscanf?
我想做这样的事情:
for(i=0; i<5; i++)
while(fscanf(in, "%d", &number)
.......
基本上,当我第一次使用fscanf时,它将从文件的开头开始扫描。我希望每次for循环完成后都能从头开始工作,该怎么办?
答案 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);
}
读取的值,以避免寻找。