【问题标题】:scanf multiple variables or one variablescanf 多个变量或一个变量
【发布时间】:2019-03-31 15:36:31
【问题描述】:

在C语言中,我需要使用scanf输入四个变量

scanf("%c %d %d %d", &v1, &v2, &v3, &v4)

第一个变量可能有两个值'c'和'q'

当我输入 c 然后我输入其他变量它会做一些计算但是当我想退出时我应该只输入 'q' 而不是输入其余的变量但是 scanf 在我输入其余的之前不会前进变量

有没有办法解决,我不确定是否可以使用scanf,但如果有其他功能,我不介意使用它

【问题讨论】:

    标签: c


    【解决方案1】:

    “有办法解决吗”

    使用fgets() 读取用户输入的 ...

    char buf[100];
    if (fgets(buf, sizeof buf, stdin)) {
    

    ..然后扫描它

      char v1;
      int v2,v2,v3;
      int cnt = sscanf(buf, "%c %d %d %d", &v1, &v2, &v3, &v4);
      if (cnt >= 1 && v1 == 'q') Quit();
      else if (cnt == 4 && v1 == 'c') Do_stuff(v2,v3,v4);
      else puts("Bad input");
    

    【讨论】:

    • 看起来不错,我会尝试并回复您!!
    【解决方案2】:

    您应该为此使用多个 scanfs。例如

    scanf("%c", &v1);
    if(v1 == 'c'){
        scanf("%d %d %d",&v2, &v3, &v4);
        /*some staff*/
    }
    else{
        /*another staff*/ 
    }
    

    【讨论】:

    • 这行得通,但这不是我想要的,因为我必须在插入 c 或 q 字母后按 Enter,这不是所需的行为
    • @TamimMohammedAli 不,你不知道!
    • (还要记得查看scanfs的返回值)
    猜你喜欢
    • 2021-11-28
    • 1970-01-01
    • 1970-01-01
    • 2022-01-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-24
    相关资源
    最近更新 更多