我是 C 的新手。我有这个打印语句,其中打印了特定的值。我需要将这个值复制到一个字符串中。但是当我尝试复制它时,出现了如下所示的异常。
Unhandled exception at 0x00007FFCF01CB20A (msvcr120d.dll) in RFIDTest.exe: 0xC0000005: Access violation reading location 0x000000000000E200.
下面显示的是打印语句,我需要将其输出放入一个变量中。
printf("%04X", (((epc[i] & 0xFF00) >> 8) | ((epc[i] & 0xFF) << 8)));
下面显示的是我如何尝试将其放入变量并 append 它。
strcat(("%04X", (((epc[i] & 0xFF00) >> 8) | ((epc[i] & 0xFF) << 8))),strData);
我的完整方法如下。
char* ipj_util_print_epc(uint16_t* epc, int len, bool little_endian)
{
char * strData="";
int i;
for (i = 0; i < len; i++)
{
/* Print hyphen every two bytes */
if (i % 1 == 0 && i > 0)
{
printf("-");
strcat("-",strData);
}
/* Print one byte at a time */
if (little_endian)
{
printf("%04X", (((epc[i] & 0xFF00) >> 8) | ((epc[i] & 0xFF) << 8)));
strcat(("%04X", (((epc[i] & 0xFF00) >> 8) | ((epc[i] & 0xFF) << 8))),strData);
}
else
{
strcat(("%04X", epc[i]),strData);
printf("%04X", epc[i]);
}
}
printf("\n");
return strData;
}
如果我做错了,那么我怎样才能得到打印到变量中的这些值?
最佳答案
结合别人的建议,你的功能应该是:
char* ipj_util_print_epc(uint16_t* epc, int len, bool little_endian)
{
char *strData = malloc(len*4+(len+1)/2+1); // 4 chars per uint16, hyphens and terminating \0
int i;
char *bufp= strData;
strData[0]= '\0';
for (i = 0; i < len; i++)
{
/* Print hyphen every two bytes */
if (i % 2 == 0 && i > 0)
{
printf("-");
strcat(bufp,"-");
bufp++;
}
/* Print one byte at a time */
if (little_endian)
{
printf("%04X", (((epc[i] & 0xFF00) >> 8) | ((epc[i] & 0xFF) << 8)));
bufp += sprintf(bufp,"%04X", (((epc[i] & 0xFF00) >> 8) | ((epc[i] & 0xFF) << 8))));
}
else
{
bufp += sprintf(bufp,"%04X", epc[i]));
printf("%04X", epc[i]);
}
}
printf("\n");
return strData;
}
关于c - 尝试将数据复制到 char 指针值时出现异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33752442/