gpt4 book ai didi

c - 每次在 for/while 循环中时,如何从头开始使用 fscanf?

转载 作者:太空宇宙 更新时间:2023-11-04 01:45:34 25 4
gpt4 key购买 nike

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

我想做这样的事情:

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

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

最佳答案

使用rewind() 返回文件开头:

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

但是请注意,此解决方案仅在流可搜索时才有效。如果它绑定(bind)到一个常规文件,无论是通过 fopen 打开还是从 shell 重定向,它应该是可搜索的,但如果它绑定(bind)到终端、管道或其他一些字符设备,rewind() 可能会失败。您不能使用 rewind() 对此进行测试,但这里有一个替代方法:

if (fseek(in, 0L, SEEK_SET)) {
fprintf(stderr, "cannot rewind inut stream\n");
exit(1);
}

更可靠的方法是保存 fscanf() 读取的值以避免查找。

关于c - 每次在 for/while 循环中时,如何从头开始使用 fscanf?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54424547/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com