初学者的请教 c=getchar(),c为什么定义为int类型

chu0duhan 2012-02-09 10:54:26
这是我第一在这里发帖,希望能够得到各位大牛们的帮助。

我现在在看C Programming language教材,对以下程序有一些不理解。书上表示c必须要足够大,除了能存储任何字符还要能存储EOF,所以要申明为INT型.为什么啊?EOF是一个怎么样特殊的值?

#include <stdio.h>
main()
{
int c;
c=getchar();
while((c=getchar())!=EOF)
putchar(c);

}
...全文
1697 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
I_Can_Play 2012-02-12
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 mstlq 的回复:]
 在计算机术语缩写通常为 EOF(End Of File),在操作系统决定资料源无更多的资料可读取。资料源通常称为档案或串流。
  在 C语言,或更精确地说成 C标准函式库中表示:文件结束符(end of file)。在while循环中以EOF作为文件结束标志,这种以EOF作为文件结束标志的文件,必须是文本文件。在文本文件中,数据都是以字符的ASCII代码值的形式存放。我们知道,ASCII代码值……
[/Quote]
正解
自信男孩 2012-02-10
  • 打赏
  • 举报
回复
EOF是文件结束符,这个宏在系统同文件中有定义的。可以按ctrl + d(linux)输入此符号。
Binzo 2012-02-10
  • 打赏
  • 举报
回复
也可以是char。
ascii码。
一个'x'(char)对应一个int数。
赵4老师 2012-02-10
  • 打赏
  • 举报
回复
为了区别'\xff'和EOF即-1
wizard_tiger 2012-02-10
  • 打赏
  • 举报
回复
返回字符的ASCII值,也可以定义成char型变量。
lily0628 2012-02-10
  • 打赏
  • 举报
回复
定义为int
表示getchar()函数的返回值为int型的
getchar()返回用户输入的第一个字符的ASCII码(为int型),出错则返回-1
sxtobj 2012-02-10
  • 打赏
  • 举报
回复 2
getchar()函数原型是int getchar( void )。
getchar()函数用于读取字符,但它返回的是一个int型值,而不是char型值。
尽管表示字符的代码本身是不是int型值,但返回int型值的原因是为了允许函数报告文件的末尾(EOF)。如果返回值是char型,那么在256个字符中必须有一个被指定用于表示EOF。如果这个字符出现在文件内部,那么这个字符之后的内容将不会被读取,因为它被解释为EOF标志了。
让函数返回一个int型值就能解决这个问题。EOF被定义为一个int型值,它的值在任何可能出现的字符范围之外。这种解决方法允许我们使用该函数来读取二进制文件。在二进制文件中,所有的字符都有可能出现,文本文件也是如此。
请高手指正!
小班得瑞 2012-02-10
  • 打赏
  • 举报
回复
2楼正解,你可以百度EOF的
justkk 2012-02-10
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 mstlq 的回复:]
在 C语言,或更精确地说成 C标准函式库中表示:文件结束符(end of file)。在while循环中以EOF作为文件结束标志,这种以EOF作为文件结束标志的文件,必须是文本文件。在文本文件中,数据都是以字符的ASCII代码值的形式存放。我们知道,ASCII代码值的……
[/Quote]
必须是文本文件吗?
可执行程序也用EOF作为文件结束标志吧
pengzhixi 2012-02-10
  • 打赏
  • 举报
回复
就为了能够保存EOF这个返回值所以用了int
ccjsj1 2012-02-10
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 zhao4zhong1 的回复:]
为了区别'\xff'和EOF即-1
[/Quote]

int getchar(void);
ProgrammingRing 2012-02-09
  • 打赏
  • 举报
回复
char -128~127怕溢出。。
jicongyue123 2012-02-09
  • 打赏
  • 举报
回复
#define EOF (-1)
mstlq 2012-02-09
  • 打赏
  • 举报
回复
 在计算机术语缩写通常为 EOF(End Of File),在操作系统决定资料源无更多的资料可读取。资料源通常称为档案或串流。
  在 C语言,或更精确地说成 C标准函式库中表示:文件结束符(end of file)。在while循环中以EOF作为文件结束标志,这种以EOF作为文件结束标志的文件,必须是文本文件。在文本文件中,数据都是以字符的ASCII代码值的形式存放。我们知道,ASCII代码值的范围是0~255,不可能出现-1,因此可以用EOF作为文件结束标志。

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧