在C中创建字符串
我试图在Texas Instrument CCS中用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:";
{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
?