int main() {
int c;
c=getchar();
while(c!=EOF) {
putchar(c);
c=getchar();
}
int c;
c=getchar();
while(c!=EOF) {
putchar(c);
c=getchar();
}
}
上面的程序用于原样输出输入的字符, EOF是<stdio.h>中定义的一个整形,通常为-1,视不同情况而定,把c定义为整形而不是字符型是因为让c能够接收ASCALL码外的字符,getchar()能够返回的各种值,包括EOF。通常敲回车时,输入的回车符也会作为一个字符被getchar()接收。 getchar()返回一个int型,是带缓冲区的函数,直到等到输入回车符才开始从缓冲区读取数据,带回显, 回车符也放在缓冲区中,具体回车符是什么要看具体的系统。
getch()函数也是返回一个int型,但他是非缓冲区函数,输入数据便立即返回,不带回显。
关于scanf的一些问题
当格式为scanf(%c)时,只要缓冲区中任意字符,都读取;
当格式为其他情况时,scanf忽略先导的空白符(空格符、回车符、换行符),从第一个有意义字符开始读取,直到遇到下一个空白符(不读取该空白符);
scanf是直到看见空白符结束读取。 gets() 这个函数不管是什么一律读进来,直到遇到回车符才停下。