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