C++中scanf与cin

来源:百度知道 编辑:UC知道 时间:2024/05/24 12:17:50
我在编程是为输入一个字母用scanf("%d",&c);但是运行是系统不显示,直接结束,什么原因??????????
说清楚些:编程语句scanf("%c",&c);,但是运行时输不进去任何数,键盘上所有的键失灵,(如果下面还有程序,直接执行后面的,不运行scanf),但是改用cin就可以了,这是为什么????!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

在scanf("%c",&c);上一行加入 getchar(); 即可。

我来回答楼主:

如果你包含的头文件用的是#include<iostream.h>,就可以用cin

如果你包含的头文件用的是#include<stdio.h>,就可以用scanf,标准不一样,

用法就不一样。

读入字符应该用scanf("%c",&c);

不显示什么你应该说清楚。如果是没有显示你输入得数,应该使用printf才能显示啊。

补充:
对于如下的程序:
#include <stdio.h>
void main ()
{
char c;
scanf("%c", &c);
printf("%c\n", c);
}
我测试过是没有问题的。我想你的scanf没有执行,估计是前边的存在输入,最后有一个回车或者stdin中还有数据会导致这样的问题,我建议你在scanf之前添加一个fflush(stdin)(如果前边存在输入的话)。
另外,输入字母就用%c。%d是不正确的。

类型不一致都会做检查的

如果输入字符, scanf返回0,需要刷新输入缓冲区
cin.good()也是false,需要刷新输入缓冲区

正确的作法,用合适的类型去接受具体的数据
并做特殊处理

c++中的cin是必须要有回车符才能认为是输入,比如

cin>>u;

scanf("%d",&n)

在输入u之后必须要回车才能正确执行,

c中的scanf是不认什么空格,回车的

比如:

scanf("%d",&u);

scanf("%d",&n);

在这两个字