c - getchar 和 putchar 不像名称指定的那样工作

标签 c

我在 Stack Overflow 上读到了几个问题,但这里的每个人都在解释 K&R 中已经解释过的问题。我想问一下下面的程序什么时候运行。然后,如果我在控制台中输入我的名字,它就会在下一行中打印出来。首先这个函数的名字是getchar为什么它不只需要一个字符“a”或任何其他字符?无论我的输入有多长,我都会得到正确的输出。

我写了“adfsajfsjssadfsa.......最多 100 个字符,putchar 准确地复制了它”。另外本书正在使用 int 。我知道int最多可容纳 4 个字节的数据,远大于 char但是如果我们可以使用其中任何一种数据类型,那么在 C 中提供数据类型有什么用呢?

为什么putchar打印到下一行?它是以这种方式构建的,总是在下一行打印输出吗?我写了adfsajfsjssadfsa.......upto to 100 characters and putchar copied it exactly什么时候会出现错误和整数 c 的情况将无法保存如此大的数据。有多少个字符?

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

最佳答案

  1. 您多次调用 getchar 和 putchar(因为它们位于循环内),因此它们会获取并打印多个字符。
  2. 使用 getchar 时必须使用 int 变量,因为 getchar 可以返回任何字符或 EOF。 EOF 不是字符,因此它不适合字符,它代表文件的结尾。

关于c - getchar 和 putchar 不像名称指定的那样工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25454454/

相关文章:

c - 将 double 型数组添加到未定义长度数组的结构中

c++ - 将 C 风格字符串与 C++ 字符串混合时的优化

c - 好友分配器、内存块和 FreeRTOS

c - 帮助在 C 中实现 GNU Readline

为 windows mobile 6 编译 zlib

c - 结构体列表、成员删除

c - C 中的严格别名违规以及如何编写符合要求的代码?

C 复杂的内存泄漏

c - ansi-c 将 char 转换为 ascii 表示的 int

c - 用户在 flex 中输入后显示消息