c - 尝试将数据复制到 char 指针值时出现异常

标签 c string exception char append

我是 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/

相关文章:

c - gcc: 错误: libhello.so: 没有那个文件或目录

c# - 提取word文本和处理cellbreak字符的建议

c# - 吞下异常时如何返回值?

Java 异常命名约定

java - 返回异常的优先级是什么

c - KVM下有获取ZoneID的API吗?

printf_s 和 scanf_s 函数的跨平台使用 - C (linux/win32)

c - OpenGL ES 2.0 + 开罗 : HUD

php - 从字符串获取Youtube视频ID

c++ - 如何在此代码中正确使用 strcmp() ?