【问题标题】:Creating string in C在 C 中创建字符串
【发布时间】:2015-05-21 09:11:17
【问题描述】:

我正在尝试在德州仪器 CCS 中创建这样的 C 字符串:{steps: nSteps} 以便将其作为 json 发送,nStepsint。我也想转换为字符串使用以下代码:

    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 *" 类型的参数与 "

类型的参数不兼容

【问题讨论】:

  • 这看起来不像 C 代码。你不能只是编造一些东西并期望它们起作用。
  • 当然可以atoi...atoi...atoi...itoa...BINGO!
  • 你在看哪本书?你的书对sprintf 有什么看法?

标签: c arrays string strcat itoa


【解决方案1】:
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,没有别的办法。

【讨论】:

    【解决方案2】:

    首先,您不能在 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 将具有所需格式的值 as

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-29
      • 1970-01-01
      • 1970-01-01
      • 2011-11-13
      • 2010-11-06
      • 2017-07-28
      相关资源
      最近更新 更多