gpt4 book ai didi

c - 读取文件时出现随机内存

转载 作者:行者123 更新时间:2023-11-30 14:21:21 26 4
gpt4 key购买 nike

我已经用 C 编写了一个将文件读入内存的函数。但是我的代码有问题,随机字符似乎出现在字符串的末尾。即使我在末尾添加了“\0”。我根本不明白这一点,因为整个文件出现了,而且我没有为更多字符分配足够的空间,所以如果有更多字符,应该会出现某种错误?无论如何,有人知道是什么原因造成的吗?

char* LoadSourceFile(char* filename)
{
int fileSize;
char* buffer;
struct stat handle;
FILE* bestand;

stat(filename, &handle);
if (fopen_s(&bestand, filename, "r") != 0) {
return NULL;
}

fileSize = handle.st_size;
handle.st_size++;
buffer = (char*)malloc(handle.st_size);
if (buffer == NULL) {
return buffer;
}

fread_s(buffer, handle.st_size, fileSize, 1, bestand);
buffer[fileSize] = '\0';
fclose(bestand);

return buffer;
}

最佳答案

查看 fread_s 的返回值,即读取到缓冲区的字节数。可能会低于预期。

bytes_read = fread_s(buffer, handle.st_size, fileSize, 1, bestand);
buffer[bytes_read] = '\0';

编辑:您必须交换计数/大小参数才能使我所说的正确:

bytes_read = fread_s(buffer, handle.st_size, 1, fileSize, bestand);
buffer[bytes_read] = '\0';

关于c - 读取文件时出现随机内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14781653/

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