c语言:getcher和getch有什么不同,还有scanf和scanf_s
1个回答
展开全部
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()是读取单个字符,而这个函数是一个不回显函数,当用户按下某个字符时,函数自动读取,无需按回车.
望采纳!!!
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询