【问题标题】:concatenate two integers into a char * in C在C中将两个整数连接成一个char *
【发布时间】:2016-09-07 14:05:42
【问题描述】:

现在忘记了我的 C 知识,很难弄清楚如何执行以下操作:

int a = 5; //getting value from a function
int b = 1; //from a function

我想要的是:

char * returnstring = "5:1"; //want to return this

我尝试了以下方法,但它不起作用。

    char astr[5], bstr[5];
    sprintf( astr, "%d", a);
    sprintf( bstr, "%d", b);

    char finstr[100]; //final string
    strcpy(finstr, astr);
    strcpy(finstr, ":");
    strcpy(finstr, bstr);

    printf ("%s", finstr);

【问题讨论】:

  • 为什么投反对票?介意解释吗?只是一个新手在这里用 C 语言问一个基本问题??
  • NMDV:bstr[5]; sprintf( bstr, "%d", b); 肯定容易受到超限的影响。
  • 至于为什么DV,“但它不起作用。”是DV磁铁。而是解释发生了什么以及预期什么。就目前而言,它看起来像是一个硬件问题,甚至没有尝试编译和运行。
  • strcpy() 不连接,而是替换。如果你想连接,你应该使用strcat()
  • char * 是一个指针。为什么(以及如何)要将两个整数连接成一个指针??

标签: c char int concat string-concatenation


【解决方案1】:

你可以用一个sprintf来做到这一点:

char str[100];
sprintf(str, "%d:%d", a, b);

【讨论】:

    【解决方案2】:

    改变

    strcpy(finstr,astr);
    strcpy(finstr, ":");
    strcpy(finstr, bstr);
    

    strcpy(finstr,astr);
    strcat(finstr, ":");
    strcat(finstr, bstr);
    

    每次连续调用都会覆盖结果字符串。您应该改为使用strcat 连接到字符串的末尾。虽然这可以通过单个 sprintf 调用轻松完成。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-02-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-08-29
      • 2019-06-20
      • 2020-02-27
      • 2012-09-23
      相关资源
      最近更新 更多