我有一个解析 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 的第一个值是正确的。第二个是错误的
我真的是堆栈,我找不到问题!有什么帮助吗?