C语言如何判断文本文档的结束

我想在文档结束的时候跳出循环,但是用fread和feof好像都没用,指针老是停留在最后一个字符那里,跳不出来(扩展名为dat的输入文档)我想问一下stream=fopen... 我想在文档结束的时候跳出循环,但是用fread和feof好像都没用,指针老是停留在最后一个字符那里,跳不出来(扩展名为dat的输入文档)
我想问一下stream = fopen("f:\\a.txt", "r"); 中的“r”是什么
展开
 我来答
小夏聊生活
高能答主

2019-12-09 · 专注于分享生活知识,热爱生活
小夏聊生活
采纳数:447 获赞数:114611

向TA提问 私信TA
展开全部

C语言判断文本文档的结束的源代码如下:

#include <iostream>

#include <fstream>

using namespace std;

#define FILENAME "stat.dat"

int main()

{

fstream _file;

_file.open(FILENAME,ios::in);

if(!_file)

{

cout<<FILENAME<<"没有被创建";

}

else

{

cout<<FILENAME<<"已经结束";

}

return 0;

}

扩展资料

C语言向文件写入内容并读取显示的源代码如下:

#include <stdio.h>

#include <stdlib.h>

#include <errno.h>

#define FILE_PATH "D:/demo.txt"  // 文件路径

int main(){

char name[20];  // 姓名

int age;  // 年龄

int studNo;  // 学号

float score;  // 平均分

FILE *fp;  // 文件指针

// 判断文件是否能够正确创建/打开

if( (fp=fopen(FILE_PATH,"wt+")) == NULL ){

perror(FILE_PATH);

exit(1);

}

L_o_o_n_i_e
2008-06-18 · TA获得超过4.2万个赞
知道大有可为答主
回答量:8507
采纳率:38%
帮助的人:5200万
展开全部
文件结束用是否读到文件结束符EOF来判断。

fread 用于2进制方式打开文件来读。
fread 不能判断是否读到EOF。
fread 只能判断要求读进的字节数 是否等于 实际读到的字节数。如果不等,知道发生了 读 的错误。

feof 不能预报 “文件已到文件尾,下面将是文件结束符EOF ". 只有当 fgetc 等语句 读入 文件结束符EOF 以后,feof才能报告:“已到文件尾啦”。

fscanf(), fgetc() 等语句能自己知道已到文件尾,并送返EOF,所以很容易判断。

例如循环读,遇到EOF跳出循环体:
while(1==1)
{
if ( ( gb = fgetc(fin)) == EOF ) goto Lab01;
a[k] = gb;
if ( fscanf(fin, "%s", buff[k]) ==EOF ) goto Lab01;
k++;
};
Lab01: fclose(fin);
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
风若远去何人留
推荐于2018-04-19 · 知道合伙人互联网行家
风若远去何人留
知道合伙人互联网行家
采纳数:20412 获赞数:450126
专业C/C++软件开发

向TA提问 私信TA
展开全部
持续读取字符,直到读函数返回错误,这时进行feof判断,如果为真,则表示文本文档结束。
int feof(FILE *fp);
功能为判断文档是否结束,如果已经达到文件尾,返回1,否则返回0.

除此外,部分读函数本身返回值同样可以判断是否结尾。
1 fgets, 返回NULL表示文件结尾。
2 fscanf, fgets等,返回EOF表示=文件结尾。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
xiaoxixp
推荐于2017-09-27 · TA获得超过2790个赞
知道小有建树答主
回答量:910
采纳率:0%
帮助的人:0
展开全部
#include <stdio.h>
int main(void)
{
FILE *stream;
stream = fopen("f:\\a.txt", "r");
char ch=fgetc(stream);
while (ch!=EOF) //也可以改为:while(!feof(stream))
{
putchar(ch);
ch=fgetc(stream);
}
fclose(stream);
return 0;
}

如果是文本,一般文本文件的结尾是以ascii码25表示的,你读到这个字符,也可以认为文本文件结束了.

eof函数查看最后一次读文件是否为文件的最后一个记录,是,返回非零,否,返回零。eof可以不加括号。

while($line=<FILE>
{
......
if(eof){
......
}
}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
tanarri
2008-06-18 · TA获得超过1.1万个赞
知道大有可为答主
回答量:5123
采纳率:33%
帮助的人:8147万
展开全部
ifstream ufile("c:\1.txt");
ufile.eof();//结束为1,不结束为0
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(5)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式