当fgets很危险时(大小小于缓冲区大小)?

时间:2018-04-16 18:53:03

标签: c fgets

FILE * file = fopen( “in.txt”, “r” );
char line[80];
if( NULL != file ) {
    fgets( line, 40, file );
    fclose( file );
}

上面的代码中是否有任何危险,我在这里看到的是缓冲行最大长度为40个字符串然后关闭文件。

1 个答案:

答案 0 :(得分:1)

您可能会混淆fgets()gets()。见Why is the gets function so dangerous that it should not be used?

只要大小参数与缓冲区大小匹配,fgets就是安全的。在你的情况下,做fgets( line, sizeof(line), file );是正常的 注意:fgets()读取最多比“大小”少1并且始终为0终止。