我不能SCANF后数

问题描述:

我的代码炭我不能SCANF后数

#include <iostream> 

using namespace std; 

int main() 
{ 

    int number=0; 
    char choice; 


    // srand(time(0)); 

    printf("Number: "); 
    scanf("%d", &number); 


    printf("Character: "); 
    scanf("%c",&choice); 

} 

我可以键入数字,但在控制台关闭,当我想输入的字符,该怎么办?

+0

我不能在这里插入库,但它的工作原理。 printf在控制台中显示“Number:”,然后输入我的自定义编号,但是在输入控制台后,控制台结束了,但没有给我添加字符的可能性。我用cout/cin,它工作,但printf/scanf不工作..为什么? – Sick654

+0

什么*确切*你打字?我敢打赌,你正在输入的内容与你所说的不同。 –

我假设你的意思是:

scanf("%d", &number); 

但你真正的问题是你的

scanf("%c",&choice); 

正在读取换行符(回车键),您的号码后输入。

因此改变:

scanf("%d", &number); 

要:

scanf("%d ", &number); /* note the space after %d */ 

“吸起来” 那换行。

更多信息:最%something符在scanf会跳过开头的“空白” (空格,制表符,换行符等)读你想让它之前的事情。 %c是该规则的例外。 scanf格式的空格也可以匹配任意类型的空格。

更多更多信息:许多程序员避开scanf以支持其他I/O方法,因为难以有效且安全地使用它。

+2

每个新程序员在学习做控制台IO时都会遇到一个问题。 –

+0

所以我扫描一个数字后,我不能扫描一个字符?如果我尝试通过“C”而不是C++编程它?我不明白你的代码,你是否修复了任何问题?或不能完成? – Sick654

+1

注意增加空格,然后阅读关于为什么1空间很重要的“更多信息” –