作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
确定内容长度并附加“\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/
这个问题已经有答案了: Determine size of dynamically allocated memory in C (15 个回答) 已关闭 6 年前。 如果 fp_len = ftell
确定内容长度并附加“\0” fseek(fp, 0, SEEK_END); long fp_len; fp_len = ftell(fp); fseek(fp, 0, SEEK_SET); char
我是一名优秀的程序员,十分优秀!