gpt4 book ai didi

c - 为什么 : fp_len = 400 , size_t len = 1

转载 作者:行者123 更新时间:2023-11-30 20:03:58 24 4
gpt4 key购买 nike

确定内容长度并附加“\0”

fseek(fp, 0, SEEK_END);
long fp_len;
fp_len = ftell(fp);
fseek(fp, 0, SEEK_SET);

char *text = malloc(sizeof(*text) * fp_len + 1);
size_t len = fread(text, fp_len, 1, fp);

text[fp_len] = '\0';

fp_len 打印:400,而 len 打印:1

printf("%d", fp_len);
printf("%d", len);

我的理解是这是错误的:

text[fp_len] = '\0';

这是正确的:

text[len] = '\0';

但是如果“len”打印1..

不会将“\0”添加到数组中的第二个位置吗?

最佳答案

调用fread(text, fp_len, 1, fp)要求读取一个大小为fp_len的元素,因此成功执行后结果为1 (读取的元素数量),如果读取失败,则可以为 0

如果您想计算从文件读取的字节(字符)数,您可以更改参数的位置,例如

 fread(text, 1, fp_len, fp)

更多信息请参阅references

关于c - 为什么 : fp_len = 400 , size_t len = 1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45017780/

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