gpt4 book ai didi

逐字符复制一行文件

转载 作者:太空宇宙 更新时间:2023-11-04 05:26:43 25 4
gpt4 key购买 nike

我正在尝试逐个字符地从文件中读取一行(尝试学习 C,我知道音品,但没有使用它)。但是我一直收到 malloc 错误,我不明白这是我的代码中给我错误的部分:

char c;
char *buffer;

if ((buffer = malloc(sizeof(char) * 100)) == NULL)
{
DXLogError("Cannot allocated memory!");
return 0;
}

while ((c = fgetc(fp)) != EOF)
{
printf("%c", c);
if (c == '\n')
{
*buffer = '\0';
break;
}

*buffer++ = c;

}

printf("End: %s", buffer);
free(buffer);
<--error here

错误:malloc:* 对象 0x10aa1f833 错误:未分配正在释放的指针*在malloc_error_break中设置断点调试

最佳答案

你的*buffer++ = c修改了buffer。所以 buffer 不再是你分配的指针。因此,当您执行后续操作时会出错,free(buffer);

在这种情况下,您可以使用另一个临时缓冲区指针作为您的“移动”指针,但要保持 buffer 完整无缺,以便 free

您可能会遇到的下一个问题是当您尝试读/写一个文件,该文件中有一行超过 100 字节时,因为您的缓冲区只有 100 字节长。所以你应该检查一下。

关于逐字符复制一行文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23253409/

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