C语言程序设计学习笔记之getchar()

来源:互联网 发布:apache自定义404页面 编辑:程序博客网 时间:2024/05/16 19:34

在实际编写运行C语言程序设计文件复制和字符计数的时候,发现putchar()函数读取字符的过程实在是扭曲,有必要记一下,以防以后再相遇。

下面是我写的代码:

#include <stdio.h>main(){int c;c=getchar();while(c!=EOF){printf("输入的字符为:"); putchar(c);printf("\n");c=getchar();}printf("您已终止输入。") ;} 
输出的机构如下图:


putchar()函数是每次都读取一个字符,验证是否符合条件,符合运行,回转再进行比较,直到输入的字符比较完毕,EOF(Ctrl+Z)如果在有效字符后,没有效果,回车也算是一个字符。


上面的程序运行时出现的情况,不是putchar()的问题,而是getchar()的实现决定的。

以下部分是找到的getchar()更详细的解释:


头文件:#include <stdio.h>

函数getchar()用于从标准输入控制台读取字符,原型如下:
    int getchar(void);

【参数】该函数没有参数。

【返回值】函数的返回值为用户输入的第一个字符的ASCII码,若出错返回-1,且将用户输入的字符回显到屏幕。如果用户在按回车键之前输入了不只一个字符,其他字符会保留在键盘缓冲区中,等待后续getchar()调用读取。也就是说,后续的getchat()调用不会等待用户按键,而是直接读取缓冲区中的字符,直到缓冲区的字符读取完毕后,才等待用户按键。

【说明】getchar()非真正函数,而是getc(stdin)宏定义。

【实例】下面的示例演示了getchar()函数的使用,使用该函数获取标准输入控制台中的字符,直到按回车键结束,代码如下。
复制纯文本新窗口
  1. #include<stdio.h>
  2. void main( ){
  3. int c;
  4. while( (c=getchar()) != '\n' ) //从控制台流中读取字符,直到按回车键结束
  5. printf ("%c", c); //输出读取内容
  6. }
#include<stdio.h>void main( ){    int c;    while( (c=getchar()) != '\n' )  //从控制台流中读取字符,直到按回车键结束        printf ("%c", c);  //输出读取内容}
运行上述程序后,将采用getchar()函数获取当前控制台的输入,直到按回车键结束,并将其输出。

读者可以尝试将第5行的 printf ("%c", c) 改成printf ("%d", c),看看有什么效果。

请读者再来看一个例子,代码如下:
复制纯文本新窗口
  1. #include<stdio.h>
  2. void main()
  3. {
  4. char ch = getchar();
  5. char ch2 = getchar();
  6. printf("You put char is %c\n",ch);
  7. printf("You put char is %c\n",ch2);
  8. system("pause");
  9. return;
  10. }
#include<stdio.h>void main(){    char ch = getchar();    char ch2 = getchar();    printf("You put char is %c\n",ch);    printf("You put char is %c\n",ch2);    system("pause");    return;}
例子本身很简单,但是仔细分析会发现有许多需 要注意的地方。输入字符wes然后按回车键出现运行结果。这里着重与getch()对比分析。首先,它需要按回车键才能返回。其次, 它返回的是缓冲区的第一个字符。再者它可以连续多次获取在按回车键前输入的多个字符。而getchO则是无回显的且不需要按回车键即返回。

0 0
原创粉丝点击