strcat返回错误的字符

时间:2019-04-18 14:21:57

标签: c arrays string

我正在使用strcat构建字符串。除了我要附加表示数组中数字的字符外,它均有效。使用以下行:

strcat(JsonDataStr, numsToSend[i]);
例如,

附加字符'c'而不是'1'。如果我手动将字符放在双引号中,则可以使用,但是我想拥有仅包含字符的一维数组。

char JsonDataStr[20];

void buildJsonString(){

    int offset;
    char strtStr[] = "[{\""  ;
    char numStr[4];
    char numsToSend[4] = {'1', '2','3','4'};

    offset = sizeof(strtStr);

    strcat(JsonDataStr, strtStr);

    for(i = 0 ; i < 2 ; i++){
           strcat(JsonDataStr, JsonDataName);
           ByteToStr(i, numStr);
           strcat(JsonDataStr, numsToSend[i]);
           strcat(JsonDataStr, "\":\"");
    }
    strcat(JsonDataStr, "\"}]");
}

知道为什么会这样。

1 个答案:

答案 0 :(得分:3)

您不能像这样使用strcat。它将字符串追加到字符串,而不是单个字符追加到字符串。一种快速解决方案是改为将numsToSend作为字符指针数组:

char *numsToSend[4] = { "1", "2", "3", "4" };

除此以外,您还可以编写将字符附加到字符串的函数,请参见this答案作为示例。