#c #cjson
#c #сиджсон
Вопрос:
- В этой функции outdata для хранения выходных данных, затем они передаются в качестве входных данных для этой функции, затем снова обновляют выходные данные, а затем обновляют их следующим образом.
- снова передайте в качестве входных данных, затем обновите 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 проделывал этот процесс снова и снова