gpt4 book ai didi

c++ - 预期 malloc 函数的大小不同

转载 作者:行者123 更新时间:2023-11-28 00:48:15 26 4
gpt4 key购买 nike

解决方案可能微不足道,但我对 cpp 并不了解。

在我执行代码后,function strlen((char*)buffer) 的值比我想象的要高。这是为什么?我该如何解决?(如果 filesize=48,则 strlen((char*)buffer)=64 并且它也应该是 48!)

    ifstream iffile;
iffile.open(argv[1], ios::in | ios::binary | ios::ate);
if (iffile.is_open())
{
long filesize = iffile.tellg();
if (filesize > 0)
{
iffile.seekg(0, ios::beg);
{
long pos = iffile.tellg();
if (pos != filesize)
{
char *buffer;
buffer = (char *)malloc(filesize * sizeof * buffer);
if (buffer != NULL)
{
memset(buffer, 0, filesize - pos);
iffile.read((char *)buffer, filesize);

此外,我不得不提一下,在我的文件中有很多不可打印的值。

最佳答案

您的代码假定该文件包含一个终止字符 '\0',以将字符数组变成一个字符串。此终止符是 strlen() 查找的内容,因此如果它不存在,您必须添加它。

一种确定的方法是 malloc()(顺便说一下,它应该是 new[] 或 C++ 中更高级的东西)比 file_size,加载后设置为'\0'

此外,您必须检查分配和 I/O 是否成功。

关于c++ - 预期 malloc 函数的大小不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15390243/

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