1

getchar()只要没有按回车就会一直接受键盘输入的字符串。
getchar()是stdio.h中的库函数,作用是从stdin流中读入一个字符。如果stdin有数据的话不用输入它就可以直接读取了。
当程序调用getchar时,程序就等着用户按键。用户输入的字符被存放在键盘缓冲区中,直到用户按回车为止(回车字符也放在缓冲区中)。即回车是用户输入结束的标志,同时也会将回车字符也放在缓冲区中,此时getchar才开始从键盘缓冲区中读取数据,包括回车符。

2

getchar()可以用来吃掉前一个剩下的回车符:
例如对于以下代码:
ch1=getchar();
ch2=getchar();
请在这里输入引用内容
如果我从键盘输入一个字符,假如是'a'吧,然后按回车.
那么'a'成功赋给ch1.
但如果我又想从键盘输入另一个字符,假如是'b'吧(当然你也可以输入'a'),但此时对ch2的赋值是不成功的.理由是第一次输入时你按下的回车,编译系统会把回车看成是一个字符,自动把它赋到ch2中了!
如果你想不让刚才按下的回车自动赋到ch2中,你可以在上面两个语句之间插入语句getchar();
这个getchar()语句可以把那个回车给"吃掉".

3

ch=getchar()的意思是获得一个字符给ch。

while((ch=getchar())!='\n')的意思是获得一个字符给ch,如果获得的字符不是'\n'(回车符),就执行循环,否则退出循环。

因此可以通过设置计数器len来计算输入字符串的长度:

#include<stdio.h>

int main()
{
    char ch;
    int len=0;
    while((ch=getchar())!='\n')
    {
            len++;
    }
    printf("%d\n",len);
    return 0;
}

但是getchar()只能获得输入的一个字符的ASCII码或EOF,而不能获得该字符。
并且一个getchar()只获得一个字符的ASCII码或EOF,因此getchar()不能用来获得字符串,即使是用来获取字符串长度,也需要

while((ch=getchar())!='\n')

这样的循环来不停的getchar()。
而下列的代码实现了获取字符,再输出字符

#include <stdio.h>

int main ()
{
   char c;

   printf("请输入字符:");
   c = getchar();

   printf("输入的字符:");
   putchar(c);

   return(0);
}

运行后的结果为:

请输入字符:a
输入的字符:a

所以getchar()得到的字符需要使用putchar()来输出。