我是C的新手。我有这个打印声明,其中打印特定值。我需要将此值复制到String中。但是当我尝试复制它时,我得到以下显示的异常。
Unhandled exception at 0x00007FFCF01CB20A (msvcr120d.dll) in RFIDTest.exe: 0xC0000005: Access violation reading location 0x000000000000E200.
下面显示的是print语句,我需要将其输出放入变量中。
printf("%04X", (((epc[i] & 0xFF00) >> 8) | ((epc[i] & 0xFF) << 8)));
以下显示我是如何将其变为变量并附加它的。
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;
}
如果我做错了,那么如何才能将这些值打印到变量中?
答案 0 :(得分:2)
strcat("-",strData);
strcat
将第二个字符串附加到第一个字符串。
在这里,您尝试修改字符串文字"-"
,这是常量。也许您想将-
添加到strData
,然后它应该是strcat
的第一个参数。
并且您已将strData
声明为 -
char * strData="";
它也是一个字符串文字。所以你需要这样做,你将会修改其内容 -
char * strData;
strData=malloc(len); // any desired length
答案 1 :(得分:2)
结合其他人的建议,你的功能应该是:
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;
}