c/c++语言开发共享Scanf输入转移到下一个scanf

我在这里有一个代码,在输入带空格的字符串时会有一些不需要的行为。 例如print illegal_argument 。 当有多个单词的输入进来时,我希望它只注册第一个单词。

目前发生的是:

 christian@oblig2 $ print 0 Enter router ID for information > ID: 0, flag: f7, model_length: 13, model: D-Link y6000 

它在命令循环中注册第一个用于比较的print 。 但是,而不是scanf提示用户输入下一个输入,而是忽略该操作,并取消用户从前一个scanf输入的第二个字/数字。

我想要发生的是:

 christian@oblig2 $ print 0 Enter router ID for information > 0 ID: 0, flag: f7, model_length: 13, model: D-link y6000. 

一切都按预期工作,但我想知道是否有更简单的方法来做到这一点。 我尝试过使用Strtok,没有太多运气。

 char input[256]; printf("%s@oblig2 $ ", getenv("USER")); scanf("%s", input); if(strcmp(input, "print") == 0) { print(); } 

上面的代码是我从用户那里获得输入的方式。

有人有任何想法吗?

    scanf()获取第一个输入值之后,它将其余部分保留在输入流中。 尝试此操作以丢弃剩余的字符:

     int ch; while ((ch = getchar()) != 'n' && ch != EOF) continue; // discard remaining characters 

    如果在下一次从stdin读取之前放置这些行,则额外的字符不会损坏您的输入。

      以上就是c/c++开发分享Scanf输入转移到下一个scanf相关内容,想了解更多C/C++开发(异常处理)及C/C++游戏开发关注计算机技术网(www.ctvol.com)!)。

      本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

      ctvol管理联系方式QQ:251552304

      本文章地址:https://www.ctvol.com/c-cdevelopment/519094.html

      (0)
      上一篇 2020年12月5日
      下一篇 2020年12月5日

      精彩推荐