有一个完成的项目,这不是我的。它运作良好,但如果我建立,我会收到警告:
the 'gets' function is dangerous and should not be used.
我现在必须修复这个项目,但我不知道如何替换这个函数
答案 0 :(得分:2)
在fgets()
信息流上使用stdin
。
请注意,与gets()
不同,fgets()
如果适合缓冲区,则不会删除输入末尾的换行符。
如果在输入超出提供的缓冲区时剥离换行符和处理行为,您可以编写一个包装器,例如:
char* read_line( char* buffer, size_t buffer_len )
{
char* line = fgets( buffer, buffer_len, stdin ) ;
char* nl = strchr( buffer, '\n' ) ;
if( nl != 0 )
{
// Replace newline character with nul
*nl = 0 ;
}
else
{
// If buffer was shorter than the line - read and discard rest of line.
while( getchar != '\n' ) { \* do nothing*\ }
}
return line ;
}