Visual Studio中scanf_s的使用

1.scanf在VS里面已经弃用了,因为其对读取输入的空间没有约束,容易造成内存越界的问题,建议使用scanf_s代替。

2.scanf_s在读取字符串或字符输入时需要在参数列表中添加长度约束,如:"scanf_s("%s",stra,100)",来限制其对内存的访问

3.scanf_s与scanf有同样的输入缓冲区问题,在连续使用scanf或scanf_s获取STD输入时会将上次输入的格式化字符串外的字符(如每次结束输入的回车符‘\n’)做为下次输入,所以每次使用此函数时建议在格式化字符串前加入一个空格来覆盖,如:"scanf_s(" %c %d",&charA,sizeof(charA),&intA)",或者每次在scanf_s前使用setvbuf(stdin, NULL, _IONBF, 0)关闭缓冲区,这里不建议fflush(stdin),此函数不是C标准库函数,可能会使可移植性降低。

posted @ 2020-10-16 01:06  IKS_XH  阅读(1820)  评论(1)    收藏  举报