c - 根据 ftell 的说法,我的文本文件大小为 25 个字节。但是,当我使用 ftell 作为 char 数组的大小时,sizeof 给了我 200。什么给了?
问题描述
本质上,这是我的问题。
FILE *fp = "/my/textfile/location";
fseek(fp, 0L, SEEK_END);
int size = ftell(fp);
char *output_string[size];
printf("%d", size); // gives me 25
printf("%ld", sizeof(output_string)); // gives me 200.
当 ftell 返回的 int 为 20 时,为什么 sizeof(output_string) 给我 200?
解决方案
char *output_string[size];
这是一个指针数组,如果你在 64 位机器上运行,一个指针是 64 位,即 8 个字节。如果大小为 25,则:
sizeof(output_string) = 25 * sizeof(char *) = 25 * 8 = 200
推荐阅读
- c# - SignalR error 404 on negotiate with asp.net application and subfolder
- javascript - Javascript - 无法读取 null 的属性“样式” - 使用 onclick 将文本发布到表格时出现问题
- swift - 如何解决:由于“未知上下文”而无法投射?
- c - 使用 fread 和 fseek 逐行读取
- c# - 表达式树成员绑定 null 与合并对象?
- python - 在 Pandas 中将序列/二维数组转换为 Dataframe 列
- python - 如何在文件夹中附加 .csv 文件(并排与 2 列间隙)
- python - 使用模板中的 xhtml2pdf CreatePdf 并上传到 S3
- mysql - MySQL 挂断并拒绝接听
- php - 使用回显和连接在 PHP 中构建已知变量名