关于文件EOF标志的添加?

mediam2000 2008-12-02 11:46:20
#include<stdio.h>

main()
{
int account;
char name[30];
double balance;

FILE *cfPtr;

if((cfPtr = fopen("client.dat", "w")) == NULL)
printf("The file could not be opened");
else{
printf("Please enter the account, name, and balance.\n");
printf("Enter EOF to end.\n");
printf("? ");
scanf("%d%s%lf", &account, name, &balance);
while(!feof(stdin)){
fprintf(cfPtr, "%d %s %.2lf ", account, name, balance);
printf("? ");
scanf("%d%s%lf", &account, name, &balance);

}
}
fclose(cfPtr); /* 结束输入,程序是否自动将EOF标志添加到cfPtr指针对应的文件中? */
}
...全文
409 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
gotopause 2012-08-22
  • 打赏
  • 举报
回复
解惑了
WizardOz 2008-12-03
  • 打赏
  • 举报
回复
EOF并不是一个字符,而只是一个函数的返回值。
icesky_ff 2008-12-03
  • 打赏
  • 举报
回复
一个文件结束标志
lihanying2008 2008-12-03
  • 打赏
  • 举报
回复
我也曾經也樓主同樣疑惑過
不過現在明白EOF的含義了

我們先一起來看看FILE是怎么定義的:
FILE <STDIO.H>

File control structure for streams.

typedef struct {
short level;
unsigned flags; char fd;
unsigned char hold;
short bsize;
unsigned char *buffer, *curp;
unsigned istemp;
short token;
} FILE;

再來看看這個flags是怎么定義的:
_F_xxxx <STDIO.H>

File status flags of streams

Name ?Meaning
_F_RDWR ?Read and write
_F_READ ?Read-only file
_F_WRIT ?Write-only file
_F_BUF ?Malloc'ed buffer data
_F_LBUF ?Line-buffered file
_F_ERR ?Error indicator
_F_EOF ?EOF indicator
_F_BIN ?Binary file indicator
_F_IN ?Data is incoming
_F_OUT ?Data is outgoing
_F_TERM ?File is a terminal
}

在來看看EOF在頭文件中是怎么定義的:
/*EOF a constant indicating that the end-of-file has been reached on a file*/

#define _F_EOF 0x0020 /* EOF indicator */
#define EOF (-1) /* End of file indicator */
EOF在與fread等文件函數的返回值做比較時,時替換為(-1)的
在文件中根本不存在EOF這個東西,EOF不過是文件類函數讀到結尾時返回的一個結束標志

brookmill 2008-12-02
  • 打赏
  • 举报
回复
首先,我可以肯定的说,程序员不必为了给文件加EOD而特意写代码
至于fclose的时候EOF是不是被自动加到文件里,我就不太确定了
我的印象是,文件里根本没有EOF这个东东
至于读文件的时候读出来的EOF,好像就是读取函数见到文件结束返回的一个标志
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。

69,373

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧