C 中使用 gets() ,编译时会出现如下警告:
warning: this program uses gets(), which is unsafe.
gets() 不安全是因为你给了他一个缓冲区,但是你却没有告诉它这个缓冲区到底有多大,也不知道输入的内容到底有多大,输入的内容可能超出缓冲区的结尾,引起你的程序崩溃。
解决方法可以使用 fgets 替代:
char buffer[bufsize]; fgets(buffer, bufsize, stdin);
实例:
// 使用 gets() char buffer[4096]; gets(buffer); // 使用 fgets() 替换 gets() char buffer[4096]; fgets(buffer, (sizeof buffer / sizeof buffer[0]), stdin);
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。
评论(0)