码迷,mamicode.com
首页 > 编程语言 > 详细

Linux 下使用C语言 gets()函数报错

时间:2015-12-15 00:41:33      阅读:360      评论:0      收藏:0      [点我收藏+]

标签:

在Linux下,使用

gets(cmd)

函数报错:warning: the ‘gets‘ function is dangerous and should not be used.

 

解决办法:采用

fgets(cmd,100,stdin);//100为size

问题解决!

 

fgets从stdin中读字符,直至读到换行符或文件结束,但一次最多读size个字符。读出的字符连同换行符存入缓冲区cmd中。返回指向cmd的指针。

gets把从stdin中输入的一行信息存入cmd中,然后将换行符置换成串结尾符NULL。用户要保证缓冲区的长度大于或等于最大的行长。

 

gets的详细解释:

char * gets ( char * str );//Get string from stdin

Reads characters from stdin and stores them as a string into str  until a newline character (‘\n‘) or the End-of-File is reached.
The ending newline character (‘\n‘) is not included in the string.

A null character (‘\0‘) is automatically appended after the last character copied to str to signal the end of the C string.

Notice that gets does not behave exactly as fgets does with stdin as argument: First, the ending newline character is not included with gets while with fgets it is. And second, gets does not let you specify a limit on how many characters are to be read, so you must be careful with the size of the array pointed by str to avoid buffer overflows.

 

说明:红色部分很好地解释了“the ‘gets‘ function is dangerous and should not be used”这个warning的原因。

参考链接:http://www.cplusplus.com/reference/clibrary/cstdio/gets/

Linux 下使用C语言 gets()函数报错

标签:

原文地址:http://www.cnblogs.com/yitianxi/p/5046798.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!