gpt4 book ai didi

c - 如何使用 while((c = getc(file)) != EOF) 遍历文件两次?

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

#include <stdio.h>

int main(int argc, char **argv) {
int c;
FILE *file;
file = fopen(argv[1], "r");
if (file) {

while ((c = getc(file)) != EOF) {
if (c == 'a') {
// loops through this part of the file without breaking the
// the original c
}
}


}
}

基本上,这个程序真的没有任何意义,只是想知道是否有一种简单的方法可以在一个文件中循环两次。

例如说一个文件的内容是“1234a456468”

当 c 位于索引 4 时。我想在不影响 c 的情况下进行另一个循环,我们将调用另一个变量 d,其中 d 也位于索引 4,我可以使用 d = getc(file) 而不会影响 c .

最佳答案

使用fseekftell:

#include <stdio.h>

int main(int argc, char **argv) {
int c;
FILE *file;
long remember_pos;
file = fopen(argv[1], "r");
if (file) {

while ((c = getc(file)) != EOF) {
remember_pos = ftell(file);
if (c == 'a') {
// loops through this part of the file without breaking the
// the original c
};
fseek(file, remember_pos, SEEK_SET);
}
}
}

手册页:https://www.freebsd.org/cgi/man.cgi?query=fseek

关于c - 如何使用 while((c = getc(file)) != EOF) 遍历文件两次?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49018271/

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