爱问知识人 爱问教育 医院库

c语言输入scanf("%1[1234]d%*c", &choice);这是什么意思,那个格式字符串?

首页

c语言输入scanf("%1[1234]d%*c", &choice);这是什么意思,那个格式字符串?


        

提交回答

全部答案

    2019-02-14 01:37:31
  •   只接收1、2、3、4四种字符,每次只接收一个,然后跳过一个字符。比如当输入12345678,则choice只接收1。如果开头不是1、2、3、4,则什么都不接收。至于这么做想达到什么逻辑目的,没有代码说不上来。
    %1[1234]是一个控制符,%后面的1是说只接收一个字符,[1234]意思是只接收1、2、3、4四个字符组成的字符序列。
      合起来意思就是只接收1、2、3、4四个字符中的任何一个赋给对应的变量choice。如果输入的不是1、2、3、4这四个字符,则按出错处理,不赋给应的变量choice。后面%*c是一个控制符,意思是跳过一个字符,比如连写两行或在循环中scanf("%1[1234]d%*c", &choice);,输入12341234,那么第一行接收1,第二行接收3,2被跳过去了(实质是接收了但不赋给任何变量)。
      关于那个d,它夹在两个控制符之间,本来按scanf格式化控制符的规则,之间夹了什么字符就在输入时输入这个字符,可这里d后是跳过控制符,所以有了d,再按如上写两行或循环测试时,跳过的刚好是等待输入的d,就不会第一行接收1,第二行接收3……了,而是第一行接收1,第二行接收2,第三行接收3……——不知我说清楚了没有……。
      

    I***

    2019-02-14 01:37:31

类似问题

换一换

相关推荐

正在加载...

热点检索

  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 173-192
返回
顶部
帮助 意见
反馈

确定举报此问题

举报原因(必选):