gpt4 book ai didi

c - 奇怪的C程序fgets

转载 作者:太空狗 更新时间:2023-10-29 15:46:17 27 4
gpt4 key购买 nike

我正在浏览一个开源代码库,我看到了以下内容:-

char *buf;
char *line;
#define BUFSIZE 5000

buf = malloc(BUFSIZE)
line = buf;

while(fgets(line, (unsigned)(buf + BUFSIZE -line), in) != NULL) {
// do stuff
// ....
}

为什么 fgets 的第二个参数是 buf + BUFSIZE - line

最佳答案

这给出了从 linebuf 结尾的字符数。你的 //do stuff 可能会增加 line

buf + BUFSIZE 是一个 char * 指向分配给 buf 的内存之后的第一个字符/p>

buf + BUFSIZE - line 是一个整数,从 linebuf + BUFSIZE 的字符数 - 因此是字符数您可以安全地写入 line 而不会溢出 buf

关于c - 奇怪的C程序fgets,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5450755/

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