gpt4 book ai didi

C - 关闭文件时出现段错误

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

我遇到了一个奇怪的问题,我在尝试关闭文件时收到段错误。数据正在正确写入文件,fflush 和 fclose 之间是否发生了某种竞争条件?

//main.c

#define filename "/home/test.txt";
char fbuf[255];
sprintf(fbuf, "%s, %f, %f,%f \n", "big", 8.0,0.0,0.8);

sendFile(&fbuf, sizeof(fbuf), (void *)filename);

static void
sendFile( void *data, int size, char *pName)
{
FILE *pFile = fopen(pName,"a");
char *buf = NULL;
buf = (char *)malloc(255);
memcpy(buf, data, sizeof(char *)*size);

if(pFile == NULL) {
logger(LOG_INFO, "Error opening file\n");
}
else {
fwrite(buf, 1, strlen(buf), pFile);
fflush(pFile);
fclose(pFile);
}
free (buf);
}

非常感谢任何帮助或建议。

最佳答案

我认为问题出在 memcpy(buf, data, sizeof(char *)*size) 中。

不应该是简单的memcpy(buf, data, size)吗?

查看您的示例,fbuf(即 data)是 255 个字符,buf 也是 255 个字符。但是 memcpy 正在复制超过一千个字符,有效地将垃圾写入堆中,结果不可预测。

关于C - 关闭文件时出现段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32381591/

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