有关getchar()应用的问题

一下问题在DEVC++中编译

#include
using namespace std;
int main()
{
    char c;
    while((c = getchar()) != '\n')
    {
        cout<return 0; 
}

该程序会以每行一个的格式输出输入的内容
但如果在char c后面加入cin>>c

#include
using namespace std;
int main()
{
    char c;
    cin>>c;
    while((c = getchar()) != '\n')
    {
        cout<return 0; 
}

则在运行时,输入的第一个字符不会被输出
求解答原因

在问为什么之前,你应该先了解是什么
getchar,gets,scanf,cin,这些都是从缓冲区里读取控制台输入的方法
你提前把数据读走了当然后面就没了呀

因为第一个字符是通过cin>>c赋给c的,在执行循环中c=getchar()!='\n'会将其覆盖。