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

来源:互联网 发布:免费图文识别软件 编辑:程序博客网 时间:2024/03/29 15:22

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);

0 0
原创粉丝点击