我正在使用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, "\"}]");
}
知道为什么会这样。
答案 0 :(得分:3)
您不能像这样使用strcat
。它将字符串追加到字符串,而不是单个字符追加到字符串。一种快速解决方案是改为将numsToSend
作为字符指针数组:
char *numsToSend[4] = { "1", "2", "3", "4" };
除此以外,您还可以编写将字符附加到字符串的函数,请参见this答案作为示例。