int main() { int c; while((c=getchar())!=EOF) putchar(c); } 为什么定义c为int,而不是char?
老师有说过什么EOF显示为-1啥的。还有讲到keyboard,buffer,program之间数据的关系但是不很懂啊,求具体...
老师有说过什么EOF显示为-1啥的。还有讲到keyboard,buffer,program之间数据的关系但是不很懂啊,求具体
展开
4个回答
展开全部
int 为整数型,char是字符型,前面的开始的类型决定了你后面C语言编写的范围,如我要求一个简单的 + - * /一般数字较多,我可以选择整数型,但是如果编写一句话,前面当然用字符型最好,这也是C语言区分开始是它要做什么的前提。
关于EOF:在计算机术语缩写通常为 EOF(End Of File),在操作系统决定资料源无更多的资料可读取。资料源通常称为档案或串流。 在 C语言,或更精确地说成 C标准函式库中表示:文件结束符(end of file)。在while循环中以EOF作为文件结束标志,这种以EOF作为文件结束标志的文件,必须是文本文件。在文本文件中,数据都是以字符的ASCII代码值的形式存放。我们知道,ASCII代码值的范围是0~255,不可能出现-1,因此可以用EOF作为文件结束标志。
档案存取或其它 I/O 功能可能传回等于象征符号值 (巨集) EOF 指示档案结束的情形发生。实际上 EOF 的值通常为 -1,但它依系统有所不同。巨集 EOF 会在编译原始码前展开实际值给预处理器。
C语言中,EOF常被作为文件结束的标志。还有很多文件处理函数处错误后的返回值也是EOF,因此常被用来判断调用一个函数是否成功。
例如:
#include <stdio.h>
int main()
{
int n;
int array[25];
while (scanf("%d",&n),n!=EOF)
{
for (int i=0; i<n; i++) scanf("%d",array+i);
for (i=0; i<n; i++) printf ("%d ",array[i]);
}
return 0; }
关于EOF:在计算机术语缩写通常为 EOF(End Of File),在操作系统决定资料源无更多的资料可读取。资料源通常称为档案或串流。 在 C语言,或更精确地说成 C标准函式库中表示:文件结束符(end of file)。在while循环中以EOF作为文件结束标志,这种以EOF作为文件结束标志的文件,必须是文本文件。在文本文件中,数据都是以字符的ASCII代码值的形式存放。我们知道,ASCII代码值的范围是0~255,不可能出现-1,因此可以用EOF作为文件结束标志。
档案存取或其它 I/O 功能可能传回等于象征符号值 (巨集) EOF 指示档案结束的情形发生。实际上 EOF 的值通常为 -1,但它依系统有所不同。巨集 EOF 会在编译原始码前展开实际值给预处理器。
C语言中,EOF常被作为文件结束的标志。还有很多文件处理函数处错误后的返回值也是EOF,因此常被用来判断调用一个函数是否成功。
例如:
#include <stdio.h>
int main()
{
int n;
int array[25];
while (scanf("%d",&n),n!=EOF)
{
for (int i=0; i<n; i++) scanf("%d",array+i);
for (i=0; i<n; i++) printf ("%d ",array[i]);
}
return 0; }
展开全部
1.c语言中,char类型和int型可以互相调用,因为他们的ascII码是对应的,所以,本题中,你将int改成char,运行也是一样的,不影响的。
2.eof是结束符,代表你全部输入结束后才输出相应字符,换成while((c=getchar())!='\0')也是一样的
3.你老师说的keyboard是指键盘输入,buffer是缓冲区,而program指你的程序代码,估计在本题中,老师想解释的逻辑关系是:程序运行过程中,键盘输入的量暂时存入缓冲区,遇到结束符后,再从缓冲区中将数据读出,输出到显示器。比如你输入abc,全部输入完成回车后,才输出abc,而不是输入a就输出a,输入b再输出b。
2.eof是结束符,代表你全部输入结束后才输出相应字符,换成while((c=getchar())!='\0')也是一样的
3.你老师说的keyboard是指键盘输入,buffer是缓冲区,而program指你的程序代码,估计在本题中,老师想解释的逻辑关系是:程序运行过程中,键盘输入的量暂时存入缓冲区,遇到结束符后,再从缓冲区中将数据读出,输出到显示器。比如你输入abc,全部输入完成回车后,才输出abc,而不是输入a就输出a,输入b再输出b。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
eof通常是作为一个文件结束标示,也可作为一个标准输入的结尾,同时也能作为一种错误返回值,当然用任何常规字符做eof的替换值,都是不合理的,eof其实根本不是一个字符,而通常只作为一个返回信号值,其实是一个整形数据类型的值,当然二进制位数就会比char要多。那么这里不能申明为char,一方面是为了防止标准字符会被意外的解释成eof(隐式类型转换),另一方面是要让接受字符的变量c能够容纳eof这个特殊的字符,通常惯例都是将这个接受char的变量(就是例子中的c)申明为int类型。这应该就是你想要的答案了吧!呵呵
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
2楼解释的不错
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询