网上搜索了一下,发现gets函数不对接受字符串的buffer进行边界检测,会造成越界,从而产生bug;自己写的东...
get(s);是获取字符串s或者数组s while(s[i]!=\'\\0\')应该是表示错误。表示一个循环体里面判断语句为:判断字符串s中第i+1个元素是否为字符串结束符号‘\0’表达式中运用到转义字符 因为C中某些特殊符号是需要用到转义字符的否则无法显示 例如:'要表示为:\'"要表示为:\"\要表示为:\\ ...
任何情况下,gets_s 首先结束读取并忽略来自 stdin 的字符,直到换行符、文件尾条件,或在调用制约处理前的读取错误。 同所有边界检查函数, gets_s 仅若实现定义了 __STDC_LIB_EXT1__ ,且用户在包含 <stdio.h> 前定义 __STDC_WANT_LIB_EXT1__ 为整数常量 1 才保证可用。 参数 str - 要被写入的字符串...
任何情况下,gets_s首先结束读取并忽略来自stdin的字符,直到换行符、文件尾条件,或在调用制约处理前的读取错误。 同所有边界检查函数,gets_s,仅若实现定义__STDC_LIB_EXT1__且用户在包含<stdio.h>前定义__STDC_WANT_LIB_EXT1__为整数常量 1 才保证可用。
char *s;gets(s);上面这种写法是错误的.s定义成指针,需要有明确的指向.gets()函数是要求提供具体指针地址,从那个地址开始存储字符串,而如果简单定义char *s;s是个野指针,无法提供具体指向。可以修改 成char *s; char a[100];s=a;gets(s);这样让s指向数组a,确定地址方位。char *s;s="...
从数组看,gets(s) s应该是一个一维数组;gets(s[0]) s应该是一个二维数组;从指针看,s都是一个指针变量
错误条件 展开表 buffernumberOfElementspSizeRead返回值buffer 的内容 NULL any 任意 EINVAL 不适用 非NULL 零 any EINVAL 未修改 非NULL any NULL EINVAL 零长度字符串 备注 _cgets_s 和_cgetws_s 从控制台读取字符串,然后将该字符串(带有 null 结束符)复制到 buffer。 _cgetws_s 是函数的宽字符版本;...
答案:B。 解释: 选项B 错误。函数 gets(s) 在 C 语言中已被废弃,不推荐使用。它存在安全漏洞,因为它无法检查输入的长度,可能导致缓冲区溢出。建议使用更安全的函数替代,如 fgets(s, sizeof(s), stdin)。 选项分析: 选项A:描述错误,函数 gets(s) 不推荐使用。 选项B:描述正确·,函数 gets(s) 不推...
前者错误,因为指针s没有开辟空间,所以无法输入,后者是正确的,不过后面要加上分号别忘了
can是情态动词,后面需要跟动词原形,所以把s去掉就可以了。