zoukankan      html  css  js  c++  java
  • C语言中的getchar和putchar

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

    这里主要解释下为什么要用int型来接受getchar函数

    很多时候,我们会写这样的两行代码:

    char c;

    c = getchar();

    这样就很有可能出现问题。因为getchar函数除了返回终端输入的字符外,在遇到Ctrl+D(Linux下)即文件结束符EOF时,getchar ()的返回EOF,这个EOF在函数库里一般定义为-1。因此,在这种情况下,getchar函数返回一个负值,把一个负值赋给一个char型的变量是不正确的。

    这里我们要注意下面几条:

    1)  getchar读入时,如果不按回车符,所有输入会放入缓冲区,而不会被读入,所以执行c=getchar();时,我们输入12,如果不按回车键,1仍然不会读入

    2)  最后按下的回车键,虽是用来告诉系统输入已结束,但同时也会作为一个字符放入缓冲区,所以我们输入12,按回车后,输入流其实有三个字符:1、2、回车;

    3)  12是被当做两个字符1和2(注意,不是数字1、2),而不像%d时,作为一个数字12来看待;

    4)  putchar()输出指定字符,不会在输出后自动换行,所以putchar(c);和putchar(d);之间要加putchar(' ');如果不加的话,会把c和d两个自动(1、2)输入到同一行。

    5)getchar可以读入所有字符。

    getchar()用于从标准输入流stdin读入一个字符,并返回这个字符。如果读到文件结尾,则返回EOF。注意到EOF不能用char类型表示,所以getchar()函数返回的是一个int型的数。使用时也应该注意这一点

    6)windows下如果想结束,就输入Ctrl+Z,表示EOF

  • 相关阅读:
    LeetCode-018-四数之和
    LeetCode-017-电话号码的字母组合
    LeetCode-016-最接近的三数之和
    LeetCode-015-三数之和
    LeetCode-014-最长公共前缀
    LeetCode-013-罗马数字转整数
    LeetCode-012-整数转罗马数字
    LeetCode-011-盛最多水的容器
    LeetCode-010-正则表达式匹配
    [leetcode]103. Binary Tree Zigzag Level Order Traversal二叉树Z形遍历
  • 原文地址:https://www.cnblogs.com/coversky/p/6744218.html
Copyright © 2011-2022 走看看