猿问

getchar()如何工作?

我对K&R中提到的使用的程序感到困惑getchar()。它提供与输入字符串相同的输出:


#include <stdio.h>


main(){

    int c;

    c = getchar();

    while(c != EOF){

         putchar(c);

         c = getchar();

    }

}

为什么要打印整个字符串?我希望它读取一个字符,然后再次要求输入。


而且,我们输入的所有字符串都以EOF结尾吗?


GCT1015
浏览 521回答 3
3回答

子衿沉夜

在您可能使用的简单设置中,它getchar与缓冲输入配合使用,因此必须先按Enter键,然后getchar才能读取任何内容。字符串不以EOF;&nbsp;结尾。实际上,EOF它实际上不是字符,而是指示文件结尾的不可思议的值。但EOF不是读取的字符串的一部分。getchar当没有什么可阅读的东西时,它就是返回的东西。

梦里花落0921

根据C定义,字符串以终止'\0'。您"C strings"的程序中没有任何内容。您的程序从标准输入(键盘)读取字符(缓冲到ENTER),并将它们写回到标准输出(屏幕)。无论您键入多少个字符或执行此操作多长时间,它都会执行此操作。要停止该程序,您必须指示标准输入没有更多数据(呵呵,键盘怎么也没有更多数据?)。您只需键入Ctrl+D(Unix)或Ctrl+Z(Windows)即可假装文件已到达末尾。Ctrl+D(或Ctrl+Z)并不是真正C意义上的字符。如果您使用输入重定向来运行程序,则EOF是文件的实际结尾,而不是使人信服的./a.out < source.c
随时随地看视频慕课网APP
我要回答