2 hchchc6016 hchchc6016 于 2016.03.09 21:04 提问

请问一下这个为什么报错

vs2015没有定义gets
所以用了gets_s,实参类型是char没错哇图片

4个回答

w1eix1iao
w1eix1iao   2016.03.26 15:49
已采纳

get_s,函数是微软自己推出来的,需要两个参数,一个是缓冲区的地址,一个是你要读入多少数据。这个函数并非c标准库。
_你可以在编译器的最前面加上这句话#define _CRT_SECURE_NO_WARNINGS,这样编译器就不会说get函数不能用了(实际上vs支持这个函数的,只是默认不支持)。
不过这个函数很不安全,推荐你以后使用这个函数char *fgets(char *buf, int bufsize, FILE *stream);你可以这样写:
fgets(buf,bufsize,stdin)
buf是你定义的缓冲区的地址,bufsize表示最多读入bufsize-1个数据,stdin是一个系统已经定义好的宏,表示标准输入(具体来说,这里是你敲打键盘时的输入)。当这个函数遇到回车就会停止。

qq423399099
qq423399099   Ds   Rxr 2016.03.09 21:36

gets_s需要两个参数char *gets_s(char *buffer,size_t sizeInCharacters);
第二个参数指定允许输入的字符长度
如果你超过了这个指定的值,会报异常,而不是将你输入的字符多余部分丢弃掉

lx624909677
lx624909677   Ds   Rxr 2016.03.09 21:50

遇到这种问题,直接把光标放在这个函数上,然后按F1,去MSDN一看就知道了,参数少了

oyljerry
oyljerry   Ds   Rxr 2016.03.09 21:06

提示不接受一个参数 需要你提供符合条件的参数

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!