scanf只规定了读取的开关而没有规定读取的结尾,所有这个可以被有恶意的人利用执行恶意代码(俗称缓冲区溢出)。
所有现在使用scanf_s来读取,它会按给它的占位符类型来读取缓冲区里面的东西,如果不符合的话就会放弃,留给下一个符合类型的scanf_s来读取。
scanf_s(“%s”,&str-demo,sizeof(str-demo));//前面是占位符属于字符串型,中间是需要存入的字符串名字,最后是获取字符串可以保存的长度。
scanf_s(“%d-%d”,……);//这样的情况在输入的时候需要使用两个占位符中间的东西来区分两个输入,如果两个占位符中间没有这些特殊的符号的话默认使用回车来区分两次输入。
需要保存东西的变量名前面需要加&取地址符,否则会报错。