使用 C 的数组中的分段错误

Segmentation Fault in an Array using C

我遇到以下函数 [Sensor_Data] 的分段错误。在该函数中,我正在执行 json 格式以将属性传递给缓冲区。

我的代码如下:

char *Json_Data = " ";
    char *Sensor_Data(void)
{
        char time[256];
        char buffer[2048];
        char temp[256] = {0};
        int size;
        memset(buffer, 0, size);

        printf("\n Sensor data Function.... ");
        sprintf(temp,"{\"Unique_ID\":\"%s\",", Uni_ID);
        strcpy(buffer, temp);
        memset(temp, 0, sizeof(temp));

        sprintf(temp, "\"Time\":\"%s\",", time);
        strcat(buffer, temp);
        memset(temp, 0, sizeof(temp));

        sprintf(temp, "\"humidity\":\"%s\",", 2345);
        strcat(buffer,temp);
        memset(temp, 0, sizeof(temp));

        sprintf(temp, "{\"X_axis\":\"%f\",\"Y_axis\":\"%f\",\"Z_axis\":\"%f\",", 18.234, 10.678, 13.345);
        strcat(buffer, temp);
        memset(temp, 0, sizeof(temp));

        strcat(buffer,"}}");
        printf("FRAME_FINAL_PACKET buffer %s\n",buffer);

        return 0;
}

主要功能:

int main(void)
{
        int rc = 0, count = 0;
        rc = cloud_init();
        if (rc != 0)
                printf("\n Cloud_init failed.\n");

        Json_Data = Sensor_Data();

        while(count <= 10)
        {
                rc = HTTPConnection(Json_Data);
                sleep(15000);
                count++;
        }
        if(rc != 0)
                printf("\n\n HTTP Connection Failed.. \n ");
}

int HTTPConnection(char *Json_Data)
{
        .........
        ..........

        rc = curl_easy_setopt(curl, CURLOPT_POSTFIELDS, Json_Data);
        
        .........
        ........
}

谁能告诉我哪里错了..为什么会出现分段错误?? 提前致谢

您的函数 Sensor_Data(void) 正在返回 0

所以变量 Json_Data 将得到 0 (NULL)

然后您将使用 NULL 作为函数中的参数 HTTPConnection(char *Json_Data)

这很可能是您崩溃的原因

我是 UB:

int size;
memset(buffer, 0, size);

因为 size 没有初始化。