编程序用getchar
❶ c语言getchar的用法
许多初学者都习惯用 char 型变量接收 getchar、getc,fgetc 等函数的返回值,其实这么做是不对的,并且隐含着足以致命的错误。getchar()最典型的程序也就几行代码而已。下面我们来看看c语言getchar的用法。
一、getchar的两点总结:
1.getchar是以行为单位进行存取的。
当用getchar进行输入时,如果输入的第一个字符为有效字符(即输入是文件结束符EOF,Windows下为组合键Ctrl+Z, Unix/Linux下为组合键Ctrl+D),那么只有当最后一个输入字符为换行符'\n'(也可以是文件结束符EOF,EOF将在后面讨论)时, getchar才会停止执行,整个程序将会往下执行。譬如下面程序段:
while((c = getchar()) != EOF){
putchar(c);
}
执行程序,输入:abc,然后回车。则程序就会去执行puchar(c),然后输出abc,这个地方不要忘了,系统输出的还有一个回车。然后可以继续输入,再次遇到换行符的时候,程序又会把那一行的输入的字符输出在终端上。
对于getchar,肯定很多初学的朋友会问,getchar不是以字符为单位读取的吗?那么,既然我输入了第一个字符a,肯定满足while循环(c = getchar()) != EOF的条件阿,那么应该执行putchar(c)在终端输出一个字符a。不错,我在用getchar的时候也是一直这么想的,但是程序就偏偏不着样执 行,而是必需读到一个换行符或者文件结束符EOF才进行一次输出。
对这个问题的一个解释是,在大师编写C的时候,当时并没有所谓终端输入的概念,所有的输入实际上都是按照文件进行读取的,文件中一般都是以行为单位的。因 此,只有遇到换行符,那么程序会认为输入结束,然后采取执行程序的其他部分。同时,输入是按照文件的方式存取的,那么要结束一个文件的输入就需用到EOF (Enf Of File). 这也就是为什么getchar结束输入退出时要用EOF的原因。
2.getchar()的返回值一般情况下是字符,但也可能是负值,即返回EOF。
这里要强调的一点就是,getchar函数通常返回终端所输入的字符,这些字符系统中对应的ASCII值都是非负的。因此,很多时候,我们会写这样的两行代码:
char c;
c = getchar();
这样就很有可能出现问题。因为getchar函数除了返回终端输入的字符外,在遇到Ctrl+D(Linux下)即文件结束符EOF时,getchar ()的返回EOF,这个EOF在函数库里一般定义为-1。因此,在这种情况下,getchar函数返回一个负值,把一个负值赋给一个char型的变量是不 正确的。为了能够让所定义的变量能够包含getchar函数返回的所有可能的值,正确的定义方法如下(K&R C中特别提到了这个问题):
int c;
c = getchar();
二、EOF的两点总结(主要指普通终端中的EOF)
1.EOF作为文件结束符时的情况:
EOF虽然是文件结束符,但并不是在任何情况下输入Ctrl+D(Windows下Ctrl+Z)都能够实现文件结束的功能,只有在下列的条件下,才作为文件结束符。
(1)遇到getcahr函数执行时,要输入第一个字符时就直接输入Ctrl+D,就可以跳出getchar(),去执行程序的其他部分;
(2)在前面输入的字符为换行符时,接着输入Ctrl+D;
(3)在前面有字符输入且不为换行符时,要连着输入两次Ctrl+D,这时第二次输入的Ctrl+D起到文件结束符的功能,至于第一次的Ctrl+D的作用将在下面介绍。
其实,这三种情况都可以总结为只有在getchar()提示新的一次输入时,直接输入Ctrl+D才相当于文件结束符。
2.EOF作为行结束符时的情况,这时候输入Ctrl+D并不能结束getchar(),而只能引发getchar()提示下一轮的输入。
这种情况主要是在进行getchar()新的一行输入时,当输入了若干字符(不能包含换行符)之后,直接输入Ctrl+D,此时的Ctrl+D并不是文件 结束符,而只是相当于换行符的功能,即结束当前的输入。以上面的代码段为例,如果执行时输入abc,然后Ctrl+D,程序输出结果为:
abcabc
注意:第一组abc为从终端输入的,然后输入Ctrl+D,就输出第二组abc,同时光标停在第二组字符的c后面,然后可以进行新一次的输入。这时如果再次输入Ctrl+D,则起到了文件结束符的作用,结束getchar()。
如果输入abc之后,然后回车,输入换行符的话,则终端显示为:
abc //第一行,带回车
abc //第二行
//第三行
其中第一行为终端输入,第二行为终端输出,光标停在了第三行处,等待新一次的终端输入。
从这里也可以看出Ctrl+D和换行符分别作为行结束符时,输出的不同结果。
EOF的作用也可以总结为:当终端有字符输入时,Ctrl+D产生的EOF相当于结束本行的输入,将引起getchar()新一轮的输入;当终端没有字符 输入或者可以说当getchar()读取新的一次输入时,输入Ctrl+D,此时产生的EOF相当于文件结束符,程序将结束getchar()的执行。
【补充】本文第二部分中关于EOF的总结部分,适用于终端驱动处于一次一行的模式下。也就是虽然getchar()和putchar()确实是按照每次一个字符 进行的。但是终端驱动处于一次一行的模式,它的输入只有到“\n”或者EOF时才结束,因此,终端上得到的输出也都是按行的。
如果要实现终端在读一个字符就结束输入的话,下面的程序是一种实现的方法(参考《C专家编程》,略有改动)
复制代码 代码如下:
/*Edit by Godbach
CU Blog: http://blog.chinaunix.net/u/33048/
*/
#include <stdio.h>
#include <stdlib.h>
int
main(void)
{
int c;
/* 终端驱动处于普通的一次一行模式 */
system("stty raw");
/* 现在的终端驱动处于一次一个字符模式 */
c = getchar();
putchar();
/* 终端驱动处又回到一次一行模式 */
system("stty cooked");
return 0;
}
编译运行该程序,则当如入一个字符时,直接出处一个字符,然后程序结束。
由此可见,由于终端驱动的模式不同,造成了getchar()输入结束的条件不一样。普通模式下需要回车或者EOF,而在一次一个字符的模式下,则输入一个字符之后就结束了。
❷ getchar用法
1、如图所示,输入如下命令,定义字符。

❸ c语言里getchar()是什么
getchar()函数是C语言专门为输入单个字符而提供的,getchar()函数是从I/O字符流中读取一个字符,必须输入换行才能读入字符。
例如:
#include<stdio.h>
int main(void)
{
char ch;
int i;
for(i=0;i<5;i++)
{
ch=getchar();//带回显,且等待按Enter键换行
printf("%c",ch);
}
return 0;
}

(3)编程序用getchar扩展阅读:
getchar()、getche()、getch()相比较
getchar()函数是C语言专门为输入单个字符而提供的,getchar()函数是从I/O字符流中读取一个字符,必须输入换行才能读入字符。
getche()、getch()函数也是读入单个字符,是从控制台直接读取一个字符,无须换行即可读入字符。
getchar()是C的标准库函数,包含在头文件<stdio.h>中。
而getche()和getch()需要的头文件是<conio.h>。conio.h不是C标准库中的头文件。conio是ConsoleInput/Output(控制台输入输出)的简写,其中定义了通过控制台进行数据输入和数据输出的函数,主要是一些用户通过按键盘产生的对应操作。
getchar()函数从键盘读入字符时,输入的字符带回显,并且必须等到输入换行(按Enter键)才能读取一个字符。
getche()函数从键盘读入字符时,输入的字符会回显到显示屏上,但是无须输入换行即可读取一个字符。
getch()函数从键盘读入字符时,输入的字符不回显到显示屏上,但是无须输入换行即可读取一个字符。
❹ 编程序,用getchar函数读入两个字符给C1,C2
getchar() 表示从键盘读取一个字符。注意:回车、空格等只要能在键盘上表示的都是字符。
所以输入时要连续输入,不要用任何东西分隔,如:
输入:AB<回车>
结果为:A,B
你反映的问题只有输出了第一个,是因为你在输入时中间添加了分隔,如:
输入:A<回车>
B<回车>
结果为:A,
❺ c语言getchar()的功能是什么
getchar()在C程序中的功能是接收一个字符。
getchar()在C程序中的功能是接收一个字符,当我们在连续输入字符的时候getchar()会给你意想不到的效果。getchar()是stdio.h中的库函数,它的作用是从stdin流中读入一个字符,也就是说,如果stdin有数据的话不用输入它就可以直接读取了。
c语言的特点
C语言是一种计算机程序设计语言,它既具有高级语言的特点,又具有汇编语言的特点。它由美国贝尔研究所的D.M.Ritchie于1972年推出,1978年后,C语言已先后被移植到大、中、小及微型机上,它可以作为工作系统设计语言。
编写系统应用程序,也可以作为应用程序设计语言,编写不依赖计算机硬件的应用程序。它的应用范围广泛,具备很强的数据处理能力,不仅仅是在软件开发上。
而且各类科研都需要用到C语言,适于编写系统软件,三维,二维图形和动画,具体应用比如单片机以及嵌入式系统开发。
❻ C语言中“getchar”什么意思
C语言中“getchar”的意思是:
getchar函数从标准输入里读取下一个字符,返回类型为int型,返回值为用户输入的ASCⅡ码,出错返回EOF。
该函数声明在stdio.h头文件中,使用的时候要包含stdio.h头文件。通常,可以利用getchar函数让程序调试运行结束后等待编程者按下键盘才返回编辑界面。
ch=getchar();等待从键盘上输入一个字符,
putchar(ch);输出此字符,
他们包含在头文件#include<stdio.h>中。
❼ 4.编程序:用getchar函数读入两个字符给c1,c2,然后分别用putchar和printf函数
#include
int
main()
{char
c1,c2;
c1=getchar();
putchar(c1);
scanf("%c",&c2);
printf("%c\n",c2);
return
0;
}
我们平时从键盘输入的字符都会存到缓存区里面,包括回车字符,getchar是从缓存区读入一个字符,用法是ch=getchar();
scanf并不针对于单个的字符处理,还可以读入数据和字符串,且scanf("%c",&ch)等价于ch=getchar();
至于putchar(ch)则等价于printf("%c",ch);功能是输出一个字符,要输出的字符变量写在括号内,如果要输出的是字符常量比如说感叹号则要这样:putchar('!');或printf("!");或printf("%c",'!');都相同。
