- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我用c编写了简单的代码,将学生信息(学号、姓名、类(class)、费用、部门)存储在文本文件student.txt中——代码片段:
FILE *fp;
fp=fopen("student.txt","r");
//Input details from user and ..
//store it in student.txt
fprintf(fp,"%d %s %s %d %s ",s.rollno,s.name,s.course,s.fee,s.dept);
我编写了以下代码来检索并打印文件中的所有记录,并且它检索了最后一条记录两次!
while (!feof(fp))
{
fscanf(fp,"%d%s%s%d%s",&s.rollno,s.name,s.course,&s.fee,s.dept);
printf("%d %s %s %d %s\n",s.rollno,s.name,s.course,s.fee,s.dept);
}
//OUTPUT :
46 mustafa be 12000 cse
41 Sam BE 32000 CSE
42 Howard BE 25000 EE
44 Sheldon BE 25000 CSE
44 Sheldon BE 25000 CSE
为什么最后一条记录(Sheldon..)从文件中读取两次(尽管我检查过,它只在文件中写入一次)。请帮忙,真的很困难。
最佳答案
只有在您尝试读取文件末尾之外的内容后,流的 EOF 指示符才会设置。因此,除非您已经尝试走得太远,否则使用 feof()
进行的测试将不起作用。
您可以在 ISO C11 标准中看到此行为,其中规定了 fgetc
:
If the end-of-file indicator for the stream is set, or if the stream is at end-of-file, the end-of-file indicator for the stream is set and the fgetc function returns EOF.
换句话说,第一次为流设置 EOF 标志是当您尝试读取文件中最后一个字符之外的第一个字符时。
您的情况是文件指针位于文件末尾,刚刚成功读取了最后一个字符。考虑到 fscanf()
能够跳过前导空格等,它比上面的稍微复杂一些,但基本上,下一个 fscanf()
将读取超出文件末尾的内容在扫描任何项目之前。
并且,当您到达文件末尾时,feof()
尚未成立。然后,您的代码将尝试 fscanf
,它将失败(并设置 EOF 标志),并且 printf
将再次输出以前的内容(因为 fscanf
没有更改它们)。
由于 fscanf
返回成功扫描的项目数,因此您可以选择以下内容:
while (fscanf (fp, "%d%s%s%d%s", blah, blah) == 5) {
printf (blah, blah);
}
// check feof here to deside if EOF or bad input line.
有关完整示例,请参阅以下程序:
#include <stdio.h>
int main (void) {
int rollno, fee;
char name[100], course[100], dept[100];
FILE *fp = fopen ("qq.in", "r");
if (fp == NULL) {
puts ("Cannot open file");
return 1;
}
while (fscanf (fp, "%d%s%s%d%s", &rollno, name, course, &fee, dept) == 5) {
printf ("%d %s %s %d %s\n", rollno, name, course, fee, dept);
}
fclose (fp);
return 0;
}
关于C文件处理记录搜索: last record displayed twice,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21071127/
除了 Display.getOrientation() 已弃用之外,Display.getRotation() 和 Display.getOrientation() 之间还有什么区别? 是否都返回等于
我的问题 这些方法中有哪一种是专业网页设计师所偏爱的吗? Web 浏览器在绘制网站时是否首选这些方法中的任何一种? 这只是个人喜好吗? 我还缺少其他技巧吗? 注意:以上问题是关于设计多列布局 floa
我的问题 专业网页设计师是否喜欢这些方法? 网页浏览器在绘制网站时是否首选这些方法? 这只是个人喜好吗? 我还缺少其他技术吗? 注意:以上问题与设计多列布局有关 float :左; http://js
我有一些代码返回 MyTrait 类型的特征对象,这样它就可以返回几个不同结构之一。我想为 trait 对象实现 Display trait,这样我就可以打印对象,并将详细信息委托(delegate)
package polymorphism; /* * @author Rahul Tripathi */ public class OverLoadingTest { /** *
我希望 Display.timerExec(int,Runnable)与 Display.asyncExec(Runnable) 大致相同但有指定的延迟。然而,似乎Display.timerExec只
就像标题所暗示的,有什么区别吗?我当时使用的是pygame.display.flip,我在互联网上看到的是,他们使用pygame.display.update而不是使用flip。哪一个更快? 最佳答案
Sample.this.display() 和 this.display() 哪个更好? class Sample{ void display(){ System.out.println("d
当图像的 CSS 属性“显示”已被任何其他 JS 脚本/函数更改时,我想运行一些 JS 代码。有什么方法可以监视该更改并设置回调函数吗? $(this).bind.('propertychange',
在浏览 Google 字体时我注意到第一个过滤器包含这些类别: Serif Sans 衬线 展示 手写 我知道什么是 (Sans)Serif 和 Handwriting 类别(这很明显)但是显示类别过
我想知道是否可以在列标记内渲染自定义 html,这是显示表标记的一部分。 例如,我希望我的专栏里面有一些下拉列表? 使用纯 html,如下所示: ... Volvo Saab Me
display.newImage() 和 display.newImageRect() 有什么区别? 哪个更好用? 最佳答案 display.newImage() 的文档具体提到: NOTE: dis
我正在使用纯 JS 和 flexbox 为我的元素创建网格。 元素的某些部分在页面加载时被显示隐藏:无,但单击按钮后它应该在不显示和阻止之间切换。 可悲的是,这完全破坏了 display: flex
我目前正在参加 HTML/CSS 类(class),这本书推荐我使用.desktop {display:none;}/.mobile {display:inline;} 以及div class="de
这个问题在这里已经有了答案: Css transition from display none to display block, navigation with subnav [duplicat
我理解 style="display: none" 隐藏一个 HTML 元素,而 style="display: block" 显示一个 block 级 HTML 元素。 我看到一些使用 style=
设置控件的样式 display: none 和 display: block 有什么区别? 最佳答案 display 属性定义了某个 HTML 元素应该如何显示。 Display block 和 no
这个问题已经有答案了: Javascript AND operator within assignment (7 个回答) 已关闭 4 年前。 假设我只想在 this.state.display 为
我不确定如何命名这个问题,因为我是 Rust 新手,所以请随意提出修改建议。 我有两个结构。一个是 Job 结构,其中包含一些数字,例如作业需要多长时间等。另一个是 JobSequence,其中包含
我不确定如何命名这个问题,因为我是 Rust 新手,所以请随意提出修改建议。 我有两个结构。一个是 Job 结构,其中包含一些数字,例如作业需要多长时间等。另一个是 JobSequence,其中包含
我是一名优秀的程序员,十分优秀!