首页 > 解决方案 > 根据 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?

标签: carraysfileiosizeof

解决方案


char *output_string[size];

这是一个指针数组,如果你在 64 位机器上运行,一个指针是 64 位,即 8 个字节。如果大小为 25,则:

sizeof(output_string) = 25 * sizeof(char *) = 25 * 8 = 200

推荐阅读