尝试将数据复制到 char 指针值时出现异常
Exception when trying to copy the data into a char pointer value
我是 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)));
下面显示的是我如何尝试将其放入变量并附加它。
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;
}
如果我做错了,那么我怎样才能得到打印到变量中的这些值?
strcat("-",strData);
strcat
将第二个字符串附加到第一个字符串。
这里你尝试修改字符串文字 "-"
,它是常量。也许您想将 -
添加到 strData
,那么它应该是 strcat
的第一个参数。
并且您还声明 strData
为 -
char * strData="";
它也是一个字符串字面量。所以你需要这样做,在那里你可以修改它的内容-
char * strData;
strData=malloc(len); // any desired length
结合别人的建议,你的功能应该是:
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 [=10=]
int i;
char *bufp= strData;
strData[0]= '[=10=]';
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 的新手。我有这个打印语句,其中打印了特定的值。我需要将这个值复制到一个字符串中。但是当我尝试复制它时,出现了如下所示的异常。
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)));
下面显示的是我如何尝试将其放入变量并附加它。
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;
}
如果我做错了,那么我怎样才能得到打印到变量中的这些值?
strcat("-",strData);
strcat
将第二个字符串附加到第一个字符串。
这里你尝试修改字符串文字 "-"
,它是常量。也许您想将 -
添加到 strData
,那么它应该是 strcat
的第一个参数。
并且您还声明 strData
为 -
char * strData="";
它也是一个字符串字面量。所以你需要这样做,在那里你可以修改它的内容-
char * strData;
strData=malloc(len); // any desired length
结合别人的建议,你的功能应该是:
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 [=10=]
int i;
char *bufp= strData;
strData[0]= '[=10=]';
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;
}