lerrorgk 2017-08-10 23:54 采纳率: 25%
浏览 2319

这里的scanf("%*s");是什么作用

while ((status = scanf("%d", &code)) != 1 ||
           (code < 1 || code > 5))
  {
        if (status != 1)
              scanf("%*s");
        printf("Enter an integer from 1 to 5, please.\n");
  }
  • 写回答

4条回答 默认 最新

  • Tsui丶 2017-08-11 00:06
    关注

    scanf("%*s")表示跳至下一空白字符,这里主要是中间的*字符起的作用,*的标准解释是滞后赋值

    比如说 int n; scanf("%*d %*d %d",&n); printf("%d",n); return 0; 你输入的是1 2 3,那么输出的是3,因为前两个已经忽略啦。

    评论
  • Lucky_Glass 2017-08-11 17:34
    关注
    这是标准化格式符,用%d举例,输入时如果在'%'后加上'*',则表示按照格式符读入一个数据,但是不存入变量里,比如'%*d',表示读入一个整数但不储存在变量中。
    其余的比如在'%'后加一个数字,如'%6d',表示输出该变量的长度至少要为该数,长度不足补充空格,如 printf("%6d",1) ,会输出(5个空格)“     1”。这是右对齐,如果'%'后的数字为负数,则是左对齐,如 printf("%-6d",1) ,会输出“1     ”。
    如果是浮点数的格式符('%f' '%lf' '%g'),在'%'加上小数点再加一个数字,则输出按四舍五入保留小数点后几位(好像最大是12位)。如printf("%.4lf",3.1415926) ,会输出“3.1416”
    
    评论
  • Auroratan 2017-08-10 23:59
    关注

    scanf("%*s",str)作用:忽略掉第一次输入的字符串! scanf("%*s",str)中,*在这里为跳过的意思,意为把从键盘输入的字符串忽略掉,不放入变量str中!

    评论
  • ZCL__FAN 2017-08-11 00:01
    关注

    表示本输入项在读入后不赋值给相应的变量

    评论
编辑
预览

报告相同问题?

悬赏问题

  • ¥15 使用okhttp分片上传文件,总是超时,到底是哪里的问题
  • ¥15 javaweb连接数据库,jsp文件加载不出来
  • ¥15 matlab关于高斯赛德尔迭代的应用编撰。(相关搜索:matlab代码|迭代法)
  • ¥15 pkg-types,vite,d
  • ¥15 损失匹配问题,求解答
  • ¥15 3500常用汉字书法体检测数据集下载
  • ¥15 odoo17在制造模块或采购模块良品与次品如何分流和在质检模块下如何开发
  • ¥15 Qt音乐播放器的音乐文件相对路径怎么写
  • ¥15 VB.NET利用摄像头拍照的程序
  • ¥15 linux下vscode设置不了字连体
手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部