导航:首页 > 文件教程 > java文件结束符eof

java文件结束符eof

发布时间:2021-03-19 22:49:07

1. C 语言,文件结束符 EOF问题

错在这里了。在C语言中EOF具有特定的含义,是文件结束的标志。而你在这里和getchar()放在一起,是想从键盘来判断是否结束,而键盘输入的字符ASCII码就没有EOF这个标志,所以就错了。
while((c=getchar())!=EOF)
即使你前面定义了EOF://#define EOF -1
这也是错的。因为所有字符的ASCII码都是正的,根本就没有-1这个字符。
你可以使用一个特殊的字符作为结束的标志,比如回车,那么那就应该改成这样的:
while((c=getchar())!=13)
回车的ASCII码就是13。

2. 什么叫"以文件结束符EOF结束。"

windows xp上好像是ctrl+z 就是你的程序一直可以输入 直到遇到ctr+z才结束 如输入3后 计算结果 继续输入 直到你按下ctrl+z为止

随手写了个 不知道是否符合要求:
#include <iostream>
#include <iomanip>
using namespace std;

int main()
{
int length; // 要求的长度
do
{
double a=2.0; // 设置分子
double b=1.0; // 设置分母
double temp; // 做个交换用
double sum=0.0; // 保存和
cout << "请输入您要计算多少项的和: " << endl;
cin >> length;
for (int i=0; i< length; i++)
{
sum+=(a/b);
temp=a;
a+=b;
b=temp;
}
cout << fixed << setprecision(6) << "前" << length
<< "项的和是: " << sum << endl;
}while(!cin.eof()); // 用ctrl+z结束

return 0;
}

3. 关于文件结束标志EOF的接收问题

是判断scanf 函数返回的值来判断是否到了文件结尾的.
第二个更改如下:
结束时
ctrl+z enter
ctrl+z enter

#include <stdio.h>
void main()
{
char c;
while(scanf("%c",&c)!=EOF)
{
putchar(c);
}

}
/*
#include <stdio.h>
void main()
{
char c;
while((c=getchar())!=EOF)
{
putchar(c);
}
}
*/

2008-05-17 150600 修改:
首先:请仔细阅读我以上以前的回答,我有提及按两次ctrl+z的问题.
另外:对于"对于第二个程序,我将Ctrl+Z的值用scanf("%c",&c);赋给c然后再判断c!=EOF,这样做为什么不能正常的退出循环?"的解释:你说这句就是相当的错误的,EOF是一个值,通常是-1,代表文件结束.怎么能用scanf读取,又怎么能用一个char的c和它判断相等??? 通过scanf的返回值知道是否到了文件结尾. 最重要的就是你必须要知道EOF不是一个字符!!!
最后:关于为什么要两次Ctrl+z ,和scanf的读取机制有关:就是在输入流中如果存在有可读的字符,Ctrl+z就不会存放进输入缓冲区。
注意你输入的最后一个是回车,这点相当的重要。
你用int测试,那么一个ctrl+z就ok了。这段代码
#include <stdio.h>
void main()
{
int c;
while(scanf("%d",&c)!=EOF)
{
printf("%d",c);
}

}

4. 文件结束符EOF

哦,这个不是1楼说的那个样子的。是文件结束的标志,事实上是-1.可以稍微修改一下楼主的程序来做证明:
while(!in.eof())
{
temp=in.get();
cout<<int(temp)<<endl;
count++;
}
这个时候,会发现在输出count之前输出的最后一个是-1.
但是为什么会输出-1(也就是文件结束符号)呢?in.eof()返回的是in里面的EOF变量,这个变量在in读到文件的结束符时才会变为1。也就是说,只有当in.get()读过了eof的时候,in中的EOF变量才会编程1,in.get()才能返回1。
那为什么按照楼主给的代码里面的in>>temp写法,最后会输出两个c,而和get的输出不一样呢?这个是因为>>在处理的时候,如果碰到读入的是文件结束符,是不会将其写道缓存中的,那样的话,缓存中的字符串还是在读入eof之前的那个字符(这个代码里面也就是'c'),然后再赋值给temp的还是'c'了。
那如何可以比较完美的修改上面的代码呢?对于文件输入流来说,有一个指针指向的是当前读的字符串的下一位,每读一位,指针就往下移一位。就比如一个只有abc的input.txt的文件,我们现在读完了c,那么指针的状态是大致是下面这个样子:
a
b
c
EOF<--
注意,这个时候,in.eof()还不返回1,因为in这个输入流还没有读EOF这个文件结束符,但是in有一个函数peek()是读当前指针指向的这个位置的符号的。那么如果用in.peek()==EOF来最为判断的标准就比较好了。楼主的例子写成
while(in.peek()!=EOF)
{
in>>temp;
cout<<temp<<endl;
count++;
}
就可以了。
顺便说一句,第一段代码里面while的里面再嵌一个while没有必要吧...
还有,无论读还是写,最好都要养成在操作完毕调用close()关闭流的好习惯:)

5. 怎么用flex匹配文件结尾啊!!为什么<S><<EOF>>会报错呀

你写了<"//.*"> 说明要匹配文件以 //.*开头 如果只要以"//"开头,用 "//".* 就可以了,双引号里的说明要完全匹配
你可以参考一下flex & bison那本书,里面正则表达式写得非常详细,很推荐.

6. TC下怎么输入文件结束符EOF

EOF只是一个编译器事先约定好的常量,不是用来输入的.
至于ctrl+z在程序里就是中断程序,一个快捷键而已

7. JAVA中如何通过EOF判断1个文件末尾

1.你的问题我不知道。
2.不知道你用的是IO流读取的么?
IO类里面应该是没有InputStreamReader.EOF 之类的标示
3.我有这样一个想法。不知道适合你的程序不。
借助他的异常机制
4.
InputStreamReader temp;
try{

temp.read()...
.....

//读到末尾时候 抛出Eofxception.... 异常
}catch(EOFEx.....){
//只抓到,不在后台输出堆栈信息
}finally{
//关闭 io 流
}
5.这样抓异常 的确很危险,出错了会不知道原因。但是打出堆栈信息
这个错误又是必须出的,后台会有很多信息....
6.不知道可不可行,个人意见仅供参考。

8. 我想问一下:txt文件的文件结束符EOF是不是就是回车键还是其他什么东西

EOF 是 End Of File 的缩写。
在C语言中,它是在标准库中定义的一个宏。#define EOF (-1)
人们经常误认为 EOF 是从文件中读取的一个字符。
其实,EOF 不是一个字符,它被定义为是 int 类型的一个负数(-1)。
EOF 也不是文件中实际存在的内容。
EOF 也不是只表示读文件到了结尾这一状态(这种状态可以用 feof() 来检测),它还能表示 I/O 操作中的读、写错误(通常可以用 ferror() 来检测)以及其它一些关联操作的错误状态。

9. 在JAVA中怎么实现输入以EOF结束

如果字来节流的话,读取到了自-1说明到了文件尾。

int i=a.read();
while(i!=-1){
//继续读取
i=a.read();
}
对于读取字符流的话,如果到了文件尾则返回null
String i=a.readLine();
while(i!=null){
//继续读取
i=a.readLine();
}

10. c语言,c != EOF 表示判断该字符是否文件结束指示符,那我要输入什么才能让程序判断输入的字符是文件结束符

按ctrl+z
这个ctrl+z 不是跟在字符串结尾的。是另起一行开头打。比如先输入一个absdf,然后回车,然后再输入ctrl+z ,然后回车。。。

阅读全文

与java文件结束符eof相关的资料

热点内容
文件资源管理器win10 浏览:507
shiroini配置文件 浏览:368
win10游戏存档在c盘哪个文件夹 浏览:602
dos无法运行java 浏览:625
c编程未声明的标识符是什么意思 浏览:733
平板移动文件到u盘很慢 浏览:976
linux内核源文件网络配置 浏览:535
pscs6新手教程 浏览:55
linux获取网页文件的命令 浏览:931
编程学习的网站有哪些 浏览:80
开迅旧版本 浏览:311
红米图片在哪个文件里 浏览:655
万宝泽app如何更换wifi 浏览:405
苹果手机微信恢复文件数据 浏览:616
香港代购苹果充电线数据线多少钱 浏览:37
iscsi网络存储软件 浏览:366
国行s7安卓70更新时间 浏览:328
eda配置文件后缀 浏览:616
迅雷去升级提示错误代码 浏览:389
天天炫斗有其他版本吗 浏览:129

友情链接