- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我在从文件中读取行时遇到问题。基本上,我的代码多读了一行,所有变量都为“0”,即
如果我的文件是:
0, 0, 3, 64, 0, 0, 0, 0
2, 0, 6, 64, 0, 0, 0, 0
4, 0, 4, 64, 0, 0, 0, 0
6, 0, 5, 64, 0, 0, 0, 0
8, 0, 2, 64, 0, 0, 0, 0
它将读入:
Object 1: 0, 0, 3, 64, 0, 0, 0, 0
Object 2: 2, 0, 6, 64, 0, 0, 0, 0
Object 3: 4, 0, 4, 64, 0, 0, 0, 0
Object 4: 6, 0, 5, 64, 0, 0, 0, 0
Object 5: 8, 0, 2, 64, 0, 0, 0, 0
Object 6: 0, 0, 0, 0, 0, 0, 0, 0
这是我的阅读算法:
while (!feof(pfile)) {
PcbPtr p = createnullPcb();
fscanf(pfile, "%d,%d,%d,%d,%d,%d,%d,%d", &p->arrivaltime, &p->priority, &p->remainingcputime,
&p->memalloc, &p->pr, &p->sc, &p->mo, &p->cd);
char cwd[1024];
char *tmp = getcwd(cwd, sizeof(cwd));
strcat(tmp, "/process");
p->args[0] = tmp;
p->args[1] = NULL;
if (!headi) {
headi = p;
}
else {
enqPcb(&headi, p);
}
}
为什么会这样?感谢您的帮助!
最佳答案
发生的事情是 feof
在尝试读取结束时返回 true
。当您到达文件末尾,但还没有尝试读取任何其他内容时,feof
将返回 false
。
简单来说:feof
并不代表在文件末尾,而是代表试图访问超过文件末尾.
请注意,当您位于文件末尾并尝试读取该额外行时,fscanf
将失败。您可以检查它的返回值以查看它是否能够读取任何内容。
关于c - while(!feof(file)) 读取额外的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10958514/
这是一个更大的电影 Sprite 程序的一部分,由于某种原因,程序在到达这个 while 循环时崩溃了,我不明白我的问题是什么。 #include #include #include #incl
这个问题已经有答案了: feof detecting false end of file (2 个回答) 已关闭10 年前。 我有一个函数应该读取文件并检测文件何时结束。 该函数当前仅读取倒数第二行并
我之前问过一个不同的问题,但我对这个问题的看法有点偏题,所以我提出了一个新问题,因为我问的是一个完全不同的问题。 我有一个函数可以读取文本文件中的给定行(由 ac 变量给出)。它执行行的读取,然后检查
大家好,我正在编写一个 c 程序,我试图一次从一个文本文件中打印两行,问题是当在最后一行时,如果行是奇数,3 行 5 行。它会打印最后一行两次。我找不到针对这个特定问题的 if 函数的比较。是 boo
这个问题在这里已经有了答案: Why is “while( !feof(file) )” always wrong? (5 个答案) 关闭 5 年前。 我是 C 的新手。我偶然发现了 feof 的某
我正在尝试通过套接字发送文件,方法是一次读取一个字符,直到缓冲区(字符数组)已满,发送它,然后重复直到文件末尾。但出于某种原因,feof 在文件结束前变为真(我相信可能是在缓冲区数组已满时)。 int
我是 C++ 的初学者,正在努力更好地理解 feof()。我读过 feof() 标志仅在尝试读取文件末尾后才设置为 true 很多次初学者如果执行类似 同时(!feof(文件))。不过,我想了解的是,
所以我做了一件简单的事情,首先我通过 ssh2_exec 执行命令(在成功验证后),然后读取变量中的答案。下面是我的代码(没有验证) try { $stdout_stream = ss
This link讲述为什么 feof() 用作循环的退出指示器是一件坏事。 不安全==>在 while 中进行 feof() 检查,并在 while 内进行 fgets() 检查。 安全==>让fg
我的程序中出现错误(应该找到字符和整数文件中的所有整数),其中“feof”不起作用(while循环永远不会结束)或没有读取/找到整数,除非整个文件充满了整数。 我的代码... #include
void suffix_strip(FILE *fp) { FILE *fp1; char word[20],ch; int len; int i=0,j; f
我正在使用 feof 计算文件中的行数,如下所示。完成后,我需要逐行循环遍历同一个文件,并执行另一个取决于行数的操作。但是,while (!feof(f)) 不会在同一个文件流上运行第二次。有没有办法
我有以下枚举和结构: enum Destination { unknown = 0, hosok, parlament, var }; struct Client { char name[30];
我正在使用 fgets(); 从文本文件中读取行 我有一个循环:while(!feof(fp)) 问题是,即使在我到达并读取最后一行之后,程序仍继续进入循环,并且在调试中文件 ptr 仅显示点而不是数
我这里真的有问题。从文件中读取字符时,我似乎并没有真正找到退出循环的最佳方法。我知道每个教程都建议我不应该使用 while( !feof() ) 但他们除了在 while 中放置 fgets() 之外
FILE *test; student st; int i = 0; test = fopen("example.bin", "rb"); while (feof(test)) { fread
我在从文件中读取行时遇到问题。基本上,我的代码多读了一行,所有变量都为“0”,即 如果我的文件是: 0, 0, 3, 64, 0, 0, 0, 0 2, 0, 6, 64, 0, 0, 0, 0 4,
这个问题在这里已经有了答案: Why is “while( !feof(file) )” always wrong? (5 个答案) 关闭 5 年前。 所以我阅读了多篇关于为什么 feof 不能正常
最近几天我一直在处理一个奇怪的 PHP 问题,feof() 函数在文件结束之前返回 true。下面是我的代码的框架: $this->fh = fopen("bigfile.txt", "r");
我打开一个文件,在指针ptr 的地址找到流。我正在尝试查看文件是否为空白。使用以下内容 if (fgetc(ptr) != EOF) 按预期工作。当文件为空时,不执行该语句。当文件不为空时,语句不执行
我是一名优秀的程序员,十分优秀!