C语言如何判断文本文档的结束
我想问一下stream = fopen("f:\\a.txt", "r"); 中的“r”是什么 展开
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);
}
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);
int feof(FILE *fp);
功能为判断文档是否结束,如果已经达到文件尾,返回1,否则返回0.
除此外,部分读函数本身返回值同样可以判断是否结尾。
1 fgets, 返回NULL表示文件结尾。
2 fscanf, fgets等,返回EOF表示=文件结尾。
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){
......
}
}
ufile.eof();//结束为1,不结束为0