как мы можем передать возвращаемое значение в качестве входных данных в ту же функцию в c

#c #cjson

#c #сиджсон

Вопрос:

  1. В этой функции outdata для хранения выходных данных, затем они передаются в качестве входных данных для этой функции, затем снова обновляют выходные данные, а затем обновляют их следующим образом.
  2. снова передайте в качестве входных данных, затем обновите outputdat.
 char *SSWgetjson_createpacket(struct_json_sensor_buffer_ptr ret_data,struct_json_sensor_buffer_ptr outdata){
    cJSON*array=cJSON_CreateArray();

    cJSON*temp_root,*root=cJSON_CreateObject();
    cJSON*rootout=cJSON_CreateObject();
    if((cJSON_Parse(outdata->data)))
    {

        rootout=cJSON_Parse(outdata->data);
        printf("outdata as a input");

    }
    else{
          rootout=cJSON_Parse(ret_data->data);
          printf("ret_data as a inputn");
    }
  //ret_data will works here.

    temp_root=cJSON_GetArrayItem(rootout,0);

    if(cJSON_GetObjectItem(temp_root,"NumPackets")){
        cJSON_Delete(temp_root);
        printf("numpacket key is present");
        int num_packets=cJSON_GetObjectItem(root,"NumPackets")->valueint;//to check
        printf("numpacket key  contains value %d ",num_packets);

        if(num_packets){

        cJSON_SetIntValue(cJSON_GetObjectItem(root,"NumPackets"),  num_packets);
        printf("numpacket key  contains incremented value %d ",num_packets);

            }
    }else{
        printf("key value not presentn");
        cJSON_AddNumberToObject(root,"NumPackets",1);
        cJSON_AddStringToObject(root,"Mac_id","12345");
    }


    ret_data->data=cJSON_Print(array);

    int current_len=strlen(ret_data->data);

    //printf("nnoutdata printat packet function before memorycopy:%sn",outdata->data);
    //outdata->len=strlen(outdata->data);

    printf("test %s n",outdata->data);

    if(outdata->len==0){
                outdata->data=calloc(1,current_len);
                outdata->len=current_len;
                memcpy(outdata->data,ret_data->data,current_len);
                printf("memory allocated outdata->len=%d  current_len=%d n",outdata->len,current_len);

    }else{
        printf("n outdata_length:%dnn",outdata->len);

                struct_json_sensor_buffer_ptr new=calloc(1,outdata->len current_len);// to allocate memory then add a function.

                new->len=ret_data->len  current_len;

                printf("memeory reallocated %d n",new->len);

                memcpy(new->data,outdata->data,outdata->len);
                memcpy(new->data outdata->len,ret_data->data,current_len);
                //free(outdata->data);
                outdata->len=new->len;
                outdata->data=new->data;
    }
    return outdata->data;

}
 

Ответ №1:

Если я вас правильно понял, вы бы использовали что-то вроде:

 #include <stdio.h>

int function1(){
    int some_value = 1;
    return some_value;
}

void function2(int p){
    printf("%dn",p);
}

int main(){
    function2(function1());
    return 0;
}
 

Комментарии:

1. это функция обратного вызова, я сомневаюсь, что возвращаемое значение будет приниматься в качестве входных данных, затем обновлять возвращаемое значение, а затем сохранять it.to проделывал этот процесс снова и снова