У меня есть функция, которая анализирует текст JSON и возвращает новую структуру EZapiEntry. Когда я проверяю значение результата, все вещи в порядке.Ошибка при использовании функции, возвращающей настраиваемую структуру
После использования этой функции в файле athor c. Я получаю неправильные результаты.
Код функции:
EZapiEntry parseEntry()
{
EZapiEntry result;
json_t *entryJson;
entryJson = json_object_get(root,"data");
unsigned int i=0;
EZuc8* maskString=json_string_value(json_object_get(entryJson,"mask"));
result.uiKeySize = json_integer_value(json_object_get(entryJson,"keySize"));
result.uiResultSize = json_integer_value(json_object_get(entryJson,"resultSize"));
EZuc8 val1[result.uiKeySize];
hexStringToBytes(json_string_value(json_object_get(entryJson,"key")),val1);
result.pucKey = val1;
EZuc8 val2[result.uiResultSize];
hexStringToBytes(json_string_value(json_object_get(entryJson,"result")),val2);
result.pucResult = val2;
EZuc8 val3[strlen(maskString)];
hexStringToBytes(maskString,val3);
result.pucMask = val3;
result.uiProfile = json_integer_value(json_object_get(entryJson,"profile"));
printf("\nkeySize : %u ",result.uiKeySize);
printf("\nResultSize : %u ",result.uiResultSize);
printf("\nkey : ");
for (i = 0 ; i <result.uiKeySize ; i++)
{
printf("%02x",result.pucKey[i]);
}
printf("\nresult : ");
for (i = 0 ; i <result.uiResultSize ; i++)
{
printf("%02x",result.pucResult[i]);
}
printf("\nmask : ");
for (i = 0 ; i <strlen(maskString) ; i++)
{
printf("%02x",result.pucMask[i]);
}
printf("\nprofile : ");
printf("%u",result.uiProfile);
return result;
}
код использования функции:
entry=parseEntry();
printf("\nkeySize2 : %u ",entry.uiKeySize);
printf("\nResultSize2: %u ",entry.uiResultSize);
printf("\nkey2 : ");
for (i = 0 ; i <entry.uiKeySize ; i++)
{
printf("%02x",entry.pucKey[i]);
}
printf("\nresult2 : ");
for (i = 0 ; i <entry.uiResultSize ; i++)
{
printf("%02x",entry.pucResult[i]);
}
printf("\nprofile2 : ");
printf("%u",entry.uiProfile);
И это результат:
keySize : 1
ResultSize : 16
key : 03
result : aaaaaa11445544ff00112233445544ff
mask : 0000000a
profile : 0
keySize2 : 1
ResultSize2: 16
key2 : bf
result2 : bfb985b0102e765c00112233445544ff
profile2 : 0
Первые значения, например Result1 является правильным. Второй неправильный
Я действительно стек, я не могу найти проблему! Есть ли помощь?