Создание строки в C

Я пытаюсь создать в Texas Instrument CCS строку в C следующим образом: {steps: nSteps} чтобы отправить его как JSON, nSteps является int.Я хочу также преобразовать в строку с помощью следующего кода:

    void jsonSteps(char* stepstr, int steps)
{
    char x[3];
    const char s1[10], s3[10];
    char s2[10];
    itoa(steps,x,10);
    s1[]="{steps:";

    s3[]="}";
    s2 = strcat(s1, x);
    stepstr = strcat(s2, s3);

}

У меня есть эта ошибка в

s1[]="{steps:";

а также

s3[]="}"; 

Я получаю ошибку

"№ 29 ожидал выражения"

а также

" #169-D аргумент типа"const char *"несовместим с параметром типа"

2 ответа

Решение
s1[]="{steps:";

Вы не можете изменить массив на какой-то другой адрес, поэтому эта строка кода не имеет никакого смысла. Вы, вероятно, хотите strcpy (s1, "{steps:"); скопировать эту строку в массив.

s3[]="}";

Та же проблема. Вы не можете установить массив, равный адресу строки. Массивы не имеют единственного значения, которое вы можете установить на что угодно. Вы, вероятно, хотите strcpy (s3, "}"); скопировать эту строку в массив.

s2 = strcat(s1, x);

Вы пытаетесь изменить s2 сам здесь. Я не уверен, что вы собираетесь здесь, но это не может сработать. Может ты хочешь strcpy(s2, s1); strcat(s2, x);? Если так, я думаю, вам не хватит места, так как вы выделили только 10 символов для s2.

stepstr = strcat(s2, s3);

Какой смысл устанавливать значение переменной, которая вот-вот выйдет из области видимости?

Вам действительно нужно выучить C, другого пути нет.

Прежде всего, вы не можете assign массивы в ц. Так,

s1[]="{steps:";

неправильно. Вы должны использовать strcpy() скопировать элементы в массив.

Тот же случай применяется для s3[]="}";, s2 = strcat(.. вид заявлений.

Это сказало, itoa() это не стандарт C функция, вы должны использовать sprintf() добиться того же.

Простой двухслойный будет выглядеть

 //assuming steps hold the int value
 char buf[128] ={0};
 sprintf(buf, "{steps: %d }", steps);

а потом, buf будет иметь значение как в требуемом формате.

Другие вопросы по тегам