-2

我正在尝试在德州仪器 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 *" 类型的参数与 "const char *" 类型的参数不兼容

4

2 回答 2

2
s1[]="{steps:";

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

s3[]="}";

同样的问题。您不能将数组设置为等于字符串的地址。数组没有可以设置为任何值的单个值。您可能希望strcpy (s3, "}");将该字符串复制到数组中。

s2 = strcat(s1, x);

你正试图在s2这里改变自己。我不确定您在这里的意图是什么,但这不可能。也许你想要strcpy(s2, s1); strcat(s2, x);?如果是这样,我认为您将用完空间,因为您只为 s2 分配了 10 个字符。

stepstr = strcat(s2, s3);

设置即将超出范围的变量的值有什么意义?

你真的只需要学习C,没有别的办法。

于 2015-05-21T09:14:42.900 回答
1

首先,您不能assign在 c 中使用数组。所以,

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将具有所需格式的

于 2015-05-21T09:14:32.647 回答