【问题标题】:scanf() not taking input from console [closed]scanf() 没有从控制台获取输入[关闭]
【发布时间】:2015-04-22 11:44:45
【问题描述】:
#include<stdio.h> 

int main() {

    float a, b, r;
    char op;

    scanf("%f",&a);
    scanf("%c",&op);
    scanf("%f",&b);
    scanf("%f",&r);

    switch(op) {

        case '+':
            r = a + b;
            printf("%f", r);
        break;

        case '-':
            r = a - b;     
            printf("%f", r);     
        break;

        case '*':
            r = a * b;    
            printf("%f", r);     
        break;

        case '/':
            r = a / b;     
            printf("%f", r);     
        break;

        default:
            printf ("Nekaj ne delas prav");

    }

    return 0;

}

它给出了输出

“Nekaj ne delas prav”

并且不接受任何输入。而不是使用'scanf()'以及为什么它直接将默认值作为输出而不是使用switch语句。

【问题讨论】:

  • 您应该使用预览功能来检查您的代码是否正确插入和可读。预览是所见即所得,所以它是可靠的
  • 对于某些特定输入,请提供预期和实际输出。请格式化您的代码,使其可读,您听说过缩进吗?
  • 您的实际问题是什么?请比“它不起作用”更具体。
  • 我投票决定关闭,因为寻求调试帮助的问题(“为什么这段代码不起作用?”)必须包括所需的行为、特定问题或错误以及必要的最短代码在问题本身中重现它。没有明确问题陈述的问题对其他读者没有用处。见:How to create a Minimal, Complete, and Verifiable example.
  • 另外,请花时间格式化可读性。

标签: c scanf


【解决方案1】:

在您的代码中,请更改

scanf("%f",&a);
scanf("%c",&op);
scanf("%f",&b);
scanf("%f",&r);

scanf("%f",&a);
scanf(" %c",&op);  //notice here
scanf("%f",&b);
scanf("%f",&r);

如果%c 之前没有前导空格,则在上一次输入之后由上一次 ENTER 键按下的\n 将被读取并视为%c 格式说明符的有效输入。因此,第二个scanf() 不会要求单独的用户输入,流程将继续到第三个scanf()

%c 之前的空格将占用所有前导空格,例如 chars,包括由之前的 ENTER 键按下的\n,并且将仅考虑非空格输入。

注意:

  1. %f 格式说明符读取并忽略前导\n,因此在这种情况下,您无需在%f 之前显式提供前导空格。

  2. main() 的签名是int main(void)

【讨论】:

  • 我已经这样做了,但还是不行。
  • 您确定它不起作用吗? ideone.com/aHcrZk
  • @Dikshant 你的意见是什么?你是如何提供输入的?
  • "它不工作,我无法提供输入,它只是提供输出为"Nekaj ne delas prav",然后程序终止。
  • @Dikshant 这很奇怪!您是如何编译代码和运行二进制文件的?
【解决方案2】:

变化:

scanf("%c", myNothing);

到:

scanf("%c", &myNothing);

或者更好:

myNothing = getchar();

另外,请确保您已启用编译器警告。

【讨论】:

    猜你喜欢
    • 2011-06-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-26
    • 2014-08-02
    相关资源
    最近更新 更多