关于EOF:

请先看下面一段程序:

 1 #include"stdio.h"
 2
 3 int main()
 4 {
 5     char a[3],t;
 6     int i,j;
 7     while(scanf("%s",a)!=EOF)
 8     {
 9       for(i=0;i<3;i++)
10         for(j=1;j<3;j++)
11         if(a[j]<a[i])
12         {
13           t=a[i];
14           a[i]=a[j];
15           a[j]=t;
16         }
17         printf("%c %c %c\n",a[0],a[1],a[2]);
18     }
19     return 0;
20 }

1:对于以上的程序或许你没有疑问,只是实现对输入的数组进行ASCII排序,但是while(scanf("%s",a)!=EOF)在ACM比赛系统中的输入是个文件,文件就有EOF,EOF在读文件时就是结束,如果在本地(自己计算机上)测试,因为没有文件,所以没有结束,只能是关闭测试窗口才能结束。在自己的机器(称为本地机器)上做测试的话,写不写都是一样的,在ACM评测系统中必须得写。EOF是个常量,没有错啊,它指的就是输入结束,如果有文件输入的话,到结束的时候就是EOF,而ACM评测系统中的输入用例就是文件,所以要用EOF,它能自动停止,否则不能停止,会造成死循环。

C++中的cin>>m可以直接等同于在C中加上!=eof。它就自动就是结束了,从这个写法来看C++要比C写法简单。

2:能不能省略#incllude?

在C/GCC文件里应该可以省略头文件#include.但这次省略的时候却出现了编译错误,原因是在stdio.h中定义的“EOF”宏。“EOF”这个宏在编译的时候会转换成10-255以外的数字,包含poj在内的大多数运行环境都会把它转变成-1.如果省略了#include命令,就不能使用宏。因此把“EOF”转换成-1后,再删除#include命令试一试。

1 float a,b=0;
2 main()
3 {
4   for(;scanf("%f",&a)!=-1;)
5  b+=a;
6 printf("$%.2f",b/12);
7 }

3:重点不同处:

时间: 2024-10-06 22:28:21

关于EOF:的相关文章

[转载]C语言EOF是什么?

原贴网址:http://www.kuqin.com/language/20111112/314745.html 收藏于此: 我学习C语言的时候,遇到的一个问题就是EOF. 它是end of file的缩写,表示"文字流"(stream)的结尾.这里的"文字流",可以是文件(file),也可以是标准输入(stdin). 比如,下面这段代码就表示,如果不是文件结尾,就把文件的内容复制到屏幕上. int c; while ((c = fgetc(fp)) != EOF)

访问网站出现EOF

HTTP/0.0 503 Service Unavailable Date: Tuesday, 18-Apr-17 10:29:46 CST Keep-Alive: timeout=38 EOF 今天访问本地的项目,全部提示上面的那些信息EOF,不知道咋回事? 之前都都能正常访问,所以我猜想本地的项目本身肯定是没有问题的. 原因:代理软件-蓝灯(由于自己经常上Google,所以下载使用了蓝灯免费版使用) 我的解决方法: 1.关掉代理软件即可 2.给你本地的项目更换域名,重新绑定host即可 延伸

C语言EOF

验证表达式getchar()!=EOF的值是1还是0 编写一个打印EOF值的程序 windows下是ctrl-z 就是ctrl和z一起按了,就是结束符linux下是ctrl-d是结束符.这个是一个特殊的值,一般是-1 区分文件中有效数据与输入结束符.C语言采用的解决办法是:在没有输入时,getchar函数将返回一个特殊值,这个特殊值与任何实际字符都不同.这个值称为EOF(end of file,文件结束)

EOFError:EOF when reading a line

Sublime2编译Python程序EOFError:EOF when reading a line: 是因为Sublime2对于python中运行含有input或者raw_input的python代码时候会报错. 就是Sublime中,运行python代码时,暂不支持输入参数.如果代码中包含用户输入的函数时(eg. raw_input())Command+b编译运行之后会提示以下错  误: 解决方案, 安装SublimeREPL插件 windows下: 打开Sublime Text2编辑器,按

&#39;0&#39;,&#39;\0&#39;,NULL,EOF的区别

要看是不是一个东西,打印一下即可 printf("%d %d %d %d\n",'0','\0',NULL,EOF); 输出: 48 0 0 -1 结论: '\0'与NULL 都是0,所以有的时候可以这样用: 初始化指针 char* p=0; 初始化字符串 char tmp[10] = {0} 或 memset(tmp,0,10) '0','\0',NULL,EOF的区别

诡异的EOF Exception

近日在写一个简单的HTTP代码中遇到了诡异的EOFException,当读取ResponseCode的时候就抛出了EOF异常,感觉很诡异,下面进行问题还原,以及分析和解决过程. 问题 有问题的代码如下: 点击阅读全文

雪泥鸿爪-教学中的debug(13) EOF与换行符

http://oj.hi-hi.cn/JudgeOnline/problem.php?cid=1088&pid=9 问题 J: 实验8_5:统计元音字母个数 题目描述 编写一程序,用于统计从键盘输入的字符串中的元音字母(a,A,e,E,i,I,o,O,u,U)的个数. 输入 每行输入一字符串 输出 输出对应字符串中元音字母的个数. 样例输入 abcio efgaeio ak akkkksd 样例输出 3 5 2 学生问, 请问这个错在哪儿?样例输出是正确的啊 1 #include<stdio

【学生信息管理系统】EOF 和 BOF

敲完学生信息管理系统时,在删除信息的时候,经常会出现下图这样的错误,遇到问题就要解决问题.经过查阅理解了记录集Recordset的EOF和BOF属性,用这两个属性可以知道记录集中是否有信息存在. EOF和BOF属性 BOF 指示当前记录位置位于 Recordset 对象的第一个记录之前. EOF 指示当前记录位置位于 Recordset 对象的最后一个记录之后. 返回值:BOF 和 EOF 属性返回布尔型值. 使用 BOF 和 EOF 属性可确定Recordset 对象是否包含记录,或者从一个记

EOF:getchar()函数返回的一个特殊值

EOF 是个宏,其意思是:End Of File,文件尾标志. 从数值上来看,就是整数-1在C语言的头文件中对其进行了宏定义:libio.h: # define EOF (-1)当读文件操作时,遇到文件结束位置或读数据出错均会返回 EOF. (C语言中所有的输入输出操作均是按读文件的思想来设计的,或者说,是文件操作的一种特例,如getchar()就是fgetc(stdin) 的一个宏 )int getchar() ; //从标准输入缓冲区读取一个字符,成功返回该字符的ASCII值,出错,返回EO

Linux C 字符函数 getchar()、putchar() 与 EOF 详解

首先给出<The_C_Programming_Language>这本书中的例子: #include <stdio.h> int main() { int c; c = getchar(); while (c != EOF) { putchar(); c = getchar(); } return 0; } 这里主要解释下为什么要用int型来接受getchar函数. 很多时候,我们会写这样的两行代码: char c; c = getchar(); 这样就很有可能出现问题.因为getc