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