在C中创建字符串

在C中创建字符串,c,arrays,string,strcat,itoa,C,Arrays,String,Strcat,Itoa,我试图在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:";

我试图在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:";

我收到一个错误

“#29需要一个表达式”

而且

#169-D“const char*”类型的参数与类型的参数不兼容


首先,您不能在c中
分配
数组。所以

s1[]="{steps:";
这是错误的。您需要使用将元素复制到数组中

s3[]="}";
s2 = strcat(s1, x);
同样的情况适用于
s3[]=“}”
s2=strcat(..
语句类型

也就是说,
itoa()
不是标准的
C
函数,您应该使用它来实现同样的功能

一个简单的双层衬里看起来像

 //assuming steps hold the int value
 char buf[128] ={0};
 sprintf(buf, "{steps: %d }", steps);
然后,
buf
将具有所需格式的值

s1[]="{steps:";
您无法将数组更改为位于其他地址,因此这行代码没有任何意义。您可能希望
strcpy(s1,“{steps:”);
将该字符串复制到数组中

s3[]="}";
s2 = strcat(s1, x);
同样的问题。不能将数组设置为字符串的地址。数组没有一个值可以设置为任何值。您可能希望
strcpy(s3,“}”);
将该字符串复制到数组中

s3[]="}";
s2 = strcat(s1, x);
您正在尝试在此处更改
s2
本身。我不确定您在此处的意图,但这可能不起作用。可能您需要
strcpy(s2,s1);strcat(s2,x);
?如果是这样,我想您将耗尽空间,因为您只为s2分配了10个字符

stepstr = strcat(s2, s3);
设置即将超出范围的变量的值有什么意义


你真的只需要学习C语言,没有其他的方法来表达它。

这看起来不像C代码。你不能只是编造一些东西然后期望它们工作。当然你可以
atoi
atoi
atoi
itoa
…宾果!你在读哪本书?你的书是关于
sprint