【问题标题】:C code, What is the meaning?C代码,什么意思?
【发布时间】:2017-10-04 22:10:17
【问题描述】:

我有这个 C 代码。请有人可以解释这段代码吗?

char szTemp[100];
unsigned char atr[40];
uint32_t uiApdu= 0;
len = sizeof(atr);
memset(szTemp, 0, sizeof(szTemp));  

for (y = 0; y < len; y++){
     sprintf(szTemp + strlen(szTemp), "%02X", atr[y]);
}

特别是,这是什么意思?

for (y = 0; y < len; y++){
         sprintf(szTemp + strlen(szTemp), "%02X", atr[y]);
    }

【问题讨论】:

  • 它将atr 的内容创建为十六进制数字序列的字符串表示。每次循环时,它都会将两个新字符附加到存储在szTemp 中的字符串的末尾。这假定 len 已在某处定义(它未在您提供的 sniipet 中定义)并且 atr 已在循环之前被初始化或分配。
  • 我已经更新了代码。
  • 表示代码在做Shlemiel's algorithm
  • @JKHuiza 这不是上次的代码吗?为什么上次清除那段代码? Here
  • 这是代码的第一部分。

标签: c gcc


【解决方案1】:

在 szTemp 的每个 sprintf 长度(strlen(szTemp )) 将增加 2 后,因此来自 atr 的 40 个字节以十六进制形式写入 szTemp

atr 数组没有分配任何值,所以它基本上保存着垃圾值

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多