Создание строки в 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
будет иметь значение как в требуемом формате.