我该怎么用,而不是得到?

时间:2014-04-29 18:04:55

标签: c gets

有一个完成的项目,这不是我的。它运作良好,但如果我建立,我会收到警告:

the 'gets' function is dangerous and should not be used.

我现在必须修复这个项目,但我不知道如何替换这个函数

1 个答案:

答案 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 ;
}