gpt4 book ai didi

arrays - 适当的长度传递给 fgets

转载 作者:行者123 更新时间:2023-12-05 08:19:49 27 4
gpt4 key购买 nike

如果我有以下缓冲区:

char buffy[40]; // includes \0 at the end

fgets 函数应该有 STLEN 40 还是 39?为什么?

char buffy[40];
while (fgets(buffy, 40, fp) != EOF)
// ...

最佳答案

fgets读入的字符数至多比其第二个参数的值少一个。所以在这种情况下,正确的值应该是 40。它最多读取 39 个字符,数组的最后一个元素将用于存储 '\0'。这确保不会发生缓冲区溢出。作为成语

fgets(buf, sizeof buf, fp)

当(且仅当)数组 buf 的声明可见时才可使用。

请注意,将它称为 fgets(buf, 39, fp) 没有任何问题,但这将导致它最多读入 38 个字符,并且 '\0' 将是存储在 buf[38] 中(如果已读取 38 个字符)。根本不会使用数组的最后一个元素 (buf[39])。

关于arrays - 适当的长度传递给 fgets,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66231054/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com