scanf不接受输入

时间:2017-10-15 08:35:11

标签: c

只有我的第一行输入请求用户键入值。输入B不要求用户键入并显示错误的总数。

#include <stdio.h>
#include <stdlib.h>
 //BASIC CALCULATION INPUT 2 INTEGER ONE BY ONE
int main(int argc, char *argv[])
{
    int a,b,c;
    //REQUEST ONE INPUT
    printf("Integer A: \n");
    scanf("%a",&a);
    //REQUEST ONE INPUT
    printf("Integer B: \n");
    scanf("%b",&b);

    c=a+b;
    //DISPLAY AMOUNT INTEGER
    printf("Total: &c",c);

    system("PAUSE");    
    return 0;
}

4 个答案:

答案 0 :(得分:1)

你们两个scanf语句都错了! 它应该是     scanf(&#34;%d&#34;,&amp; a);     scanf(&#34;%d&#34;,&amp; b); 对于用户输入a和b的整数类型,使用%d。 &amp; a是包含a的值的标识符a的引用(地址)。 并且用户输出整数c的printf语句应该是     的printf(&#34;%d&#34;,C);

答案 1 :(得分:0)

在匹配整数之前,在pip中添加一个空格以丢弃所有空格。比如

scanf

答案 2 :(得分:0)

您的两个scanf语句都使用错误的格式说明符。因此undefined behaviour

scanf("%a",&a);

scanf("%b",&b);

a要求标准C中的浮点* as its argument, but you are passing int * . There's no format specifier b`。

使用%d扫描int。

更好的是,avoid scanf altogether并使用fgets并改为解析该行。

另一个问题是你的printf声明:

printf("Total: &c",c);

也是错的。它应该是:

printf("Total: %c",c);

打印c的值。

答案 3 :(得分:0)

没有像%b这样的格式说明符,这就是为什么输入B没有请求用户键入的原因。我认为这会对你有帮助。

#include <stdio.h>
#include <stdlib.h>
 //BASIC CALCULATION INPUT 2 INTEGER ONE BY ONE
int main(int argc, char *argv[])
{

int a,b,c;
//REQUEST ONE INPUT
printf("Integer A: \n");
scanf("%d",&a);
//REQUEST ONE INPUT
printf("Integer B: \n");
scanf("%d",&b);

c=a+b;
//DISPLAY AMOUNT INTEGER
printf("Total: &c",c);

  system("PAUSE");  
  return 0;
}