strcat возвращает неправильный символ - PullRequest
0 голосов
/ 18 апреля 2019

Я использую strcat для построения строки. Это работает за исключением случаев, когда я хочу добавить символы, которые представляют числа из массива. Строка, которая использует:

strcat(JsonDataStr, numsToSend[i]);

например, добавляет символ «с» вместо «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 Ответ

3 голосов
/ 18 апреля 2019

Вы не можете использовать strcat, как это. Он добавляет строки к строкам, а не одиночные символы к строкам. Быстрым решением было бы иметь вместо numsToSend массив указателей на символы:

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

Кроме того, вы можете написать функцию, которая добавляет символы в строки, см. этот ответ для примера.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...