| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 901 人关注过本帖
标题:新手请教一个c语言输出问题
只看楼主 加入收藏
蓝xy天
Rank: 2
来 自:四川 成都
等 级:论坛游民
帖 子:8
专家分:10
注 册:2012-4-2
结帖率:0
收藏
已结贴  问题点数:10 回复次数:11 
新手请教一个c语言输出问题
printf("%d - at EOF\n",c);
里面那个-  at EOF  是什么意思
搜索更多相关主题的帖子: 问题 c语言 
2012-04-22 19:55
xieshenghui
Rank: 2
等 级:论坛游民
帖 子:44
专家分:15
注 册:2011-12-24
收藏
得分:2 
。。。。。。。。多看书去
2012-04-22 20:02
蓝xy天
Rank: 2
来 自:四川 成都
等 级:论坛游民
帖 子:8
专家分:10
注 册:2012-4-2
收藏
得分:0 
我就是没找到额  请教一下嘛
2012-04-22 20:07
lc5491137
Rank: 2
等 级:论坛游民
帖 子:37
专家分:70
注 册:2012-3-5
收藏
得分:2 
EOF表示文件的结尾
2012-04-22 20:39
蓝xy天
Rank: 2
来 自:四川 成都
等 级:论坛游民
帖 子:8
专家分:10
注 册:2012-4-2
收藏
得分:0 
回复 4楼 lc5491137
谢谢你哈,主要是前面多了个- at 请问有什么用啊,我是第一次见这个。
2012-04-22 21:27
姚志良
Rank: 1
等 级:新手上路
帖 子:6
专家分:4
注 册:2012-4-7
收藏
得分:2 
应该是程序结束的意思
2012-04-23 10:49
ab1034982749
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
帖 子:215
专家分:1185
注 册:2012-4-14
收藏
得分:2 
你能否把全部的代码贴出来啊,这样才能进一步探索,
printf("%d - at EOF\n",c);
如果按照你这个语句直接翻译,意思应该是 字符c的ascii码的十进制数at the end of file.
就是最后一个字符是c;
2012-04-23 12:14
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:2 
以下是引用蓝xy天在2012-4-22 19:55:12的发言:

printf("%d - at EOF\n",c);
里面那个-  at EOF  是什么意思
傻孩子,那是字符串文字。

授人以渔,不授人以鱼。
2012-04-23 16:43
zhengbingyin
Rank: 2
等 级:论坛游民
帖 子:52
专家分:20
注 册:2012-3-27
收藏
得分:2 
晕,楼上正解,EOF我还没学,不过我知道楼主把他错用为字符串了
2012-04-23 20:11
zhengbingyin
Rank: 2
等 级:论坛游民
帖 子:52
专家分:20
注 册:2012-3-27
收藏
得分:0 
转一博客文章给你看
C语言中EOF的应用
2008年06月26日 星期四 13:58
1.5.1. 文件复制
借助于getchar 与putchar 函数,可以在不了解其它输入/输出知识的情况下编写出
数量惊人的有用的代码。最简单的例子就是把输入一次一个字符地复制到输出,其基本思想
如下:
读一个字符
while (该字符不是文件结束指示符)
输出刚读入的字符
读下一个字符
将上述基本思想转换为C语言程序为:
#include <stdio.h>

main()
{
int c;
c = getchar();
while (c != EOF) {
putchar(c);
c = getchar();
}
}
其中,关系运算符!=表示“不等于”。
字符在键盘、屏幕或其它的任何地方无论以什么形式表现,它在机器内部都是以位模式
存储的。char 类型专门用于存储这种字符型数据,当然任何整型(int)也可以用于存储字
符型数据。因为某些潜在的重要原因,我们在此使用int类型。
这里需要解决如何区分文件中有效数据与输入结束符的问题。C语言采取的解决方法是:
在没有输入时,getchar 函数将返回一个特殊值,这个特殊值与任何实际字符都不同。这个
值称为EOF(end of file,文件结束)。

我们在声明变量c 的时候,必须让它大到足以存放getchar函数返回的任何值。这里之所以不把c声明成char类型,是因为它必须足够大,除了能存储任何可能的字符外还要能存储文件结束符EOF。因此,我们将c声明成int类型。
EOF 定义在头文件<stdio.h>中,是个整型数,其具体数值是什么并不重要,只要它与任何char类型的值都不相同即可。这里使用符号常量,可以确保程序不需要依赖于其对应的任何特定的数值。
对于经验比较丰富的C 语言程序员,可以把这个字符复制程序编写得更精炼一些。在C语言中,类似于
c = getchar()
之类的赋值操作是一个表达式,并且具有一个值,即赋值后左边变量保存的值。也就是说,
赋值可以作为更大的表达式的一部分出现。如果将为c赋值的操作放在while循环语句的测
试部分中,上述字符复制程序便可以改写成下列形式:
#include <stdio.h>

main()
{
int c;
while ((c = getchar()) != EOF)
putchar(c);
}
在该程序中,while 循环语句首先读一个字符并将其赋值给c,然后测试该字符是否为文件
结束标志。如果该字符不是文件结束标志,则执行while语句体,并打印该字符。随后重复
执行while语句。当到达输入的结尾位置时,while循环语句终止执行,从而整个main函
数执行结束。
以上这段程序将输入集中化,getchar函数在程序中只出现了一次,这样就缩短了程序,
整个程序看起来更紧凑。习惯这种风格后,读者就会发现按照这种方式编写的程序更易阅读。
我们经常会看到这种风格。(不过,如果我们过多地使用这种类型的复杂语句,编写的程序可
能会很难理解,应尽量避免这种情况。)
对while语句的条件部分来说,赋值表达式两边的圆括号不能省略。不等于运算符!=的
优先级比赋值运算符=的优先级要高,这样,在不使用圆括号的情况下关系测试!=将在赋值=
操作之前执行。因此语句
c = getchar() != EOF
等价于语句
c = (getchar() != EOF)
该语句执行后,c的值将被置为0 或1(取决于调用getchar函数时是否碰到文件结束标志),
这并不是我们所希望的结果
2012-04-23 20:16
快速回复:新手请教一个c语言输出问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.024304 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved