c语言:getcher和getch有什么不同,还有scanf和scanf_s

如题所述

scanf()在读取数据时不检查边界,所以可能会造成内存访问越界:

//例如:分配了5字节的空间但是用户输入了10字节,就会导致scanf()读到10个字节
char buf[5]={'\0'};
scanf("%s", buf);
//如果输入1234567890,则5以后的部分会被写到别的变量所在的空间上去,从而可能会导致程序运行异常。

以上代码如果用scanf_s()则可避免此问题:

char buf[5]={'\0'};
scanf_s("%s",buf,5); //最多读取4个字符,因为buf[4]要放'\0' 
//如果输入1234567890,则buf只会接受前4个字符

getchar()是读取单个字符,而这个函数是一个不回显函数,当用户按下某个字符时,函数自动读取,无需按回车.

望采纳!!!

温馨提示:答案为网友推荐,仅供参考
相似回答