gpt4 book ai didi

c - 段错误(核心转储)

转载 作者:行者123 更新时间:2023-11-30 15:55:34 25 4
gpt4 key购买 nike

我在以下代码中遇到段错误(核心转储):

void Update_Log( )
{
struct logData update;
int file;

char *writeBuffer=NULL;

if((file=creat("/home/user/Desktop/DMS/DMS/filename.txt",O_RDONLY|O_WRONLY))==-1)
perror("file not opened");
update.clientName="user";
update.filename="user";
update.timestamp="some time";
sprintf(writeBuffer,"%s %s %s",update.clientName,update.filename,update.timestamp);


if((write(file,writeBuffer,sizeof(writeBuffer)))==-1)
perror("write unsuccessful");
close(file);
}

我的结构如下:

struct logData
{
char *clientName;
char *filename;
char *timestamp;
};

有人可以帮忙吗?

最佳答案

您正在尝试写入 writeBuffer,它是一个空指针,您应该将其声明为数组(1),或者在堆(2)上为其分配内存。

  1. char writeBuffer[100];
  2. char *writeBuffer=malloc(100)

在这两种情况下,您不应使用 sprintf,而应使用 snprintf 来确保缓冲区不会溢出。

关于c - 段错误(核心转储),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12034607/

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