c - sizeof(文本) 不等于 : fp_len + 1

标签 c

如果

fp_len = ftell(fp); 

打印470

这不应该打印“471”吗? (它打印 8。可能只打印第一行)

char *text = malloc(sizeof(*text) * fp_len + 1);
int text_len;
text_len = sizeof(text);

printf("text-len: %d --- ",text_len);

完整:

FILE *fp;
fp = fopen(path, "r");

fseek(fp, 0, SEEK_END);

int fp_len;
fp_len = ftell(fp); 
printf("%d---", fp_len);

fseek(fp, 0, SEEK_SET);

char *text = malloc(sizeof(*text) * fp_len + 1);

int text_len;
text_len = sizeof(text);
printf("text-len: %d --- ",text_len);

fread(text, fp_len, 1, fp);

printf("%s",text);

free(text);

最佳答案

sizeof 给出类型的大小,而不是字符串长度。 对于char *text,类型是指针值,64 位机器上指针值的大小可能是 8。

关于c - sizeof(文本) 不等于 : fp_len + 1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44967257/

相关文章:

c - Doxygen 没有收集全局待办事项列表中的所有\待办事项

c - 指向结构内部结构的 void 指针

c - 自由函数激活断点

c - 在 C 中使用系统调用编写填充十六进制

c - Gstreamer:无法同时从 alsasrc 收听音频和录音?

c - 将整数作为 char 添加以在 C 中创建字符串

c - gdb共享库没有调试信息

c - 使用 Visual Studio 访问复合文字的成员

C 程序 - 在 Linux 上运行; Windows 运行时失败

C - MPI 子进程接收到不正确的字符串