【问题标题】:scanf for both character and integerscanf 用于字符和整数
【发布时间】:2020-09-14 22:33:45
【问题描述】:

我正在尝试同时使用输入字符和整数。但是当我使用 cin>>ch>>val; 进行输入时,它可以工作。但是使用 scanf("%c%d",&ch,&val);,它向我显示运行时错误。我该怎么做才能摆脱这个问题?我想使用 scanf 更快的输入。 这是我的部分代码:

 #include<bits/stdc++.h>
 using namespace std;
 int main()
 {
    int q;
    scanf("%d",&q);
    while(q--)
    {
        char ch;
        int val,in;
        //cin>>ch>>val;
        scanf("%c %d",&ch,&val);
        in=val;
        if(ch=='a'){
            //scanf("%d",&val);
            //update(1,0,m,++indx,val);
            printf("First Case\n");
        }else{
            //si(in);
            //if(in>tree[1]) printf("none\n");
            //else query(1,0,m,in);
            printf("Second Case\n");
        }
    }
}

【问题讨论】:

  • 这个问题应该标记c++吗?
  • 也许你需要一个空格:"%c %d".
  • 不行
  • @FiddlingBits 不是修辞。在%d%s%f 之前从来没有需要空格,但可能%c%[] 之前需要空格,因为它们不会自动过滤前导空格。
  • @WeatherVane 非常感谢..它工作得很好..我用过“%c%d”

标签: c++ c format scanf


【解决方案1】:

我运行了这段代码!这对我来说可以。因此,您可能在 C++ 中使用 scanf 并忘记包含,或者可能是您的代码中的其他内容。 你能分享完整的代码吗?正如您所提到的, scanf() 函数没有问题。您可以采用多个输入,例如 scanf(%d%d%c%c,&a,&b,&c,&d);

#include <stdio.h>
int main()
{
    printf("Hello World");
    int q=1;
    while(q--)
    {
        char ch;
        int val,in;
        scanf("%c%d",&ch,&val);
        in=val;
        if(ch=='a'){
            printf("%d",val);
        }else{
            printf("%d",val);
        }
    }
    return 0;
}

【讨论】:

  • 但是你应该检查 scanf("%c%d",&ch,&val); 的返回值我认为您的代码将返回 1。但它应该返回 2
  • 对不起..我使用 scanf 来获取 q(variable) 值。这就是问题所在。你给定的代码是完美的
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多