我有多个int变量,每个int大约有4到6位数。
我想将它们组合成一个大字符串(char *)并添加符号'>'在每个整数之间
这将是一些事情:
int a = 123456, b = 2244, c = 23456, d = 54321;
char * str;
和输出字符串将是这样的:123456>2244>23456>54321\0
答案 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。