如何将多个整数组合成一个字符串并在其间添加符号?

时间:2015-02-13 02:07:21

标签: c string

我有多个int变量,每个int大约有4到6位数。

我想将它们组合成一个大字符串(char *)并添加符号'>'在每个整数之间

这将是一些事情:

int  a = 123456, b = 2244, c = 23456, d = 54321;
char * str;

和输出字符串将是这样的:123456>2244>23456>54321\0

2 个答案:

答案 0 :(得分:0)

试试这个

char string[100];
snprintf(string, sizeof(string), "%d>%d>%d>%d", a, b, c, d);

如果你的意思是一个长度可变的数组,你可以这样做

#include <stdio.h>
#include <string.h>

int main()
{
    int  array[5] = {1, 2, 3, 4, 5};
    char string[1024];
    int  size;

    size  = sizeof(string);
    size -= snprintf(string, sizeof(string), "%d", array[0]);
    for (size_t i = 1 ; ((i < sizeof(array) / sizeof(array[0])) && (size > 0)) ; ++i)
    {
        char current[100];

        snprintf(current, sizeof(current), ">%d", array[i]);

        size -= strlen(current);
        if (size >= 0)
            strcat(string, current);
    }   
    printf("%s\n", string);
    return 0;
}

答案 1 :(得分:0)

怎么样:

char buf[n*7+1]; /* big enough for 6 digits per, plus >. See my comment below. */
char * cur = buf; /* points to start of buf. */
int i;
for(i=0; i<n; ++i) {
  /* sprintf returns the number of characters converted, so
     this advances the pointer to the end of the added chars. */
  cur += sprintf(cur, "%d>", array[i]);
}
*(cur - 1) = '\0'; /* get rid of the last > */

我还没有编译过这个,所以你可能需要制作一些mod。