cin与getchar()

西木凌萧 2011-09-11 11:05:55
// template.cpp : 定义控制台应用程序的入口点。
//统计字符的程序

#include "stdafx.h"
#include <iostream>
using namespace std;

int _tmain(int argc, _TCHAR* argv[])
{
char c;
int b=0;
cout<<"please input the char"<<endl;
cin>>c;

while(c!='\n')
{
c=getchar();
if(c>='a'&&c<='z'||c>='A'&&c<='Z')
b++;
}

cout<<b<<endl;
system( "Pause ");
return 0;
}

问题一:为啥输入的字符总比输入的少一个
问题二:为啥我把c=getchar();注释掉就会出现死循环??
...全文
216 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
CiCi 2011-09-12
  • 打赏
  • 举报
回复
同意二楼
ffjj56 2011-09-12
  • 打赏
  • 举报
回复
见二楼二楼
鲤鱼 2011-09-11
  • 打赏
  • 举报
回复
上楼说的对
fiveyes 2011-09-11
  • 打赏
  • 举报
回复

#include <iostream>
using namespace std;

int main(int argc, char* argv[])
{
char c;
int b=0;
cout<<"please input the char"<<endl;
cin>>c; //1.因为这第一个输入没有统计到

while(c!='\n')
{
c=getchar(); //这已经是第2个输入字符了
if(c>='a'&&c<='z'||c>='A'&&c<='Z')
b++; //b==1的时候,是从第2个字符开始统计的
//c=getchar(); //放在这里应该好一些

//c接受了一个字符,其它的应该是存在输入流里,
//getchar()的作用就是从输入流里取得下一个字符
//如果注释掉了,总是跟第1个字符较劲,也就拿不到'\n'了
}

cout<<b<<endl;
system( "Pause ");
return 0;
}
fox000002 2011-09-11
  • 打赏
  • 举报
回复
cin>>c; // 第一个用于判断了,但没有计入总数


没有 getchar 的话,c 的值永远不变,while 判断条件一直为 true,死循环

33,311

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧