关于scanf和scanf_s的注意事项及问题

1、scanf()是标准化格式输入,使用过程中需注意:在读入单个字符且格式说明符为%c时,空格、制表符、换行符也会被当做一个字符被输入。故字符最好不要和数据同时输入(个人理解,暂时没有找到解决问题的办法,文章后面有例子),可以使用getche()读一个字符再用scanf()读其他变量值。

2、scanf_s()是scanf()的扩展,也叫做安全函数,它能够解决字符输入超限溢出问题。如:

                                      char code[10];

                                      scanf(“%s”,&code);

      当输入字符超过10时,就会溢出,也就是说scanf函数负责输入所有的输入字符,当输入超过数组大小时就会溢出;而使用scanf_s()如下:

                                     char code[10];

                                     scanf_s(“%s”,&code,10);

      这个函数会进行参数检查,如果输入超过10个则只接受10个字符(参数传入),如果不超过10个则正常接收数据。

 

 

附错误用例:(要求在一行输入三个参数,一个字符,两个整形变量。一运行到这里就会终止程序)

      char commond;
      unsigned int A, B;

      scanf("%c%d %d",&commond,1, &A, &B);

解决用例:

      char commond;
      unsigned int A, B;

      commond = _getche();
      scanf("%d %d", &A, &B);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值