我初学C语言,在windows下用win-tc作编译器.win-tc提示在win98以上版本应在程序最后加getch();,否则运行完程序后将自动关闭,无法看到运行结果(我用的是winXP).开始运行"hello,world"程序(在窗口DOS下运行)一切正常,完成后按任意键关闭.
然后运行这套程序:
#include<stdio.h>
main()
{
int c;
c=getchar();
while(c!=EOF){
putchar(c);
c=getchar();
}
return0;
getch();
}
时,打开DOS,发现输入键盘什么,屏幕打印什么.这是不是说明getchar();是指键盘输入?那EOF有声作用呢(键盘输入不会有文件结束的)?
我把while后改成(c!=EOF&&c!=0)时,在DOS下依然可以输入0,怎么解释?
不好意思,打错了,是c!='0'
另外,在这个程序中我去掉getch(),dos没有自动关闭。这是不是说C搜索到getchar()函数,让我先输入,然后按什么键开始运行程序?
c语言中getchar()的应用和输入途径
答案:5 悬赏:30
解决时间 2021-04-08 14:03
- 提问者网友:回憶丶初
- 2021-04-08 02:38
最佳答案
- 二级知识专家网友:苦柚恕我颓废
- 2021-04-08 04:18
getchar();的确是键盘输入,EOF在这里并不是用来判断文件是否结束,而仅仅是代表数值-1,这在头文件中是定义过的,你可以去看一下,while(c!=EOF)中的条件其实是判断当字符变量C的ASCII码值不等于-1时执行下面的语句,这个条件是永远为真的,因为任何字符的ASCII码值是不可能为负数的,如果把条件改为(c!=EOF&&c!=0)是判断当字符变量C的ASCII码值不等于-1而且不等于0,对输入的字符而言这个条件也是永远为真的,因此仍然可以随意输入字符,你的理解其实是有误的,因为比较的的是ASCII码的值,而你输入的0的ASCII码值并非0而是48,那么48当然不等于0啦,所以条件为真,可以正常执行下面的语句
全部回答
- 1楼网友:哥在撩妹请勿打扰
- 2021-04-08 08:34
c=getchar(); //输入一个字符给c,屏幕显示的是你输入的字符
while(c!=EOF){
putchar(c); //在dos屏幕上输出显示字符c的值
c=getchar(); //再输入一个值给c
可能是最后c=getchar();的这一步不论while条件是否满足都得执行,lz是不是以为这一步也被包含在循环语句中了?
或把while后改成(c!=EOF&&c!=‘0’)
- 2楼网友:闲懒诗人
- 2021-04-08 07:01
char *gets( char *buffer );
功能:从stdin流中读取字符串,直至接受到换行符或eof时停止,并将读取的结果存放在str指针所指向的字符数组中。换行符不作为读取串的内容,读取的换行符被转换为null值,并由此来结束字符串。
getchar 从stdio流中读字符
选c
------------------c++部落------------hello word!-------- 无论你是初学者还是专家,只要你热爱编程、交流、分享,欢迎加入
- 3楼网友:最后战士
- 2021-04-08 05:29
EOF在Windows下是ctrl+z。
c!=0不是数字0。你的输入都是Assic字符,所以0对应的是48。按照你的要求,你的判断应该这样写:
c!=EOF&&c!=48
- 4楼网友:爱情是怎么炼成的
- 2021-04-08 04:26
getchar函数是一个输入函数.putchar是输出函数。putchar(c);
c=getchar();按照你的这段代码当然是输入什么就打印什么,当语句运行到c=getchar();语句时,就会等待用户输入后才会继续执行,而如果输入不出错的话,putchar(c);就执行,把上次输入的字符打印出来。一般情况下输入任何东西都不会认为是出错的,因为getchar只取首字符,例如输入3dfj3224ds,则只取字符3,注意它和数字3的区别,getchar在读内容时是把数字都当字符看待,字符"3"的ASCLL码是51,也是它在机内的二进制存储形式的大小,这可与数字3相差甚远了。
所以这也是你把while后改成(c!=EOF&&c!=0)时,在DOS下依然可以输入0的原因,因为c!=0中的0是数字0,而你若输入0的话,因为getchar是以字符0来看待的,当c!=0做比较时是以字符的ASCLL码做比较的,又0的ASCLL码为48,于是48!=0成立,那就当然可以输出0了,若想输入0后不输出,则改为c!='0'就可以了.
现在回到前面的EOF问题,我说了一般是不会输入是不会认为出错的,但可以试试ctrl+d和ctrl+z,
但EOF在不同的操作系统中输入这个EOF有不同的按键,也可以调用系统函数改变重新设定,所以在这里它只是给你一种结束循环的方法。有声作用只是你用上面的方法输入EOF作用后的提示音,这样循环就结束了。
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯