连接char数组和int数组并存储在字符串数组中

时间:2015-06-19 06:55:04

标签: c arrays string char int

我想连接char数组和int数组,并将它们存储在另一个char数组中。我怎么能这样做?

这是迄今为止的代码

char letter[100];
int number[100], i;

char * letterNum[100];

for (i = 0; i < 100; i++){
 letterNum[i] = strcat(letter[i], number[i]);
}

预期输出应为

  

a1
b1 ...

3 个答案:

答案 0 :(得分:2)

strcat()函数连接不是char的字符串,您需要sprintf()

sprintf(letterNum[i], "%c%d", letter[i], number[i]);

而且,在你的情况下,letterNum是一个指针数组,它应该是一个数组数组,比如

char letterNum[100][3];

然后,您可以使用snprintf()代替sprintf()来防止缓冲区溢出

if (snprintf(letterNum[i], 3, "%c%d", letter[i], number[i]) > 2)
    youHaveToDoSomethin_An_Error_Occurred();

答案 1 :(得分:1)

我想Iharob先生已经answered你的问题,但只是详细说明,

让我们看看strcat()的{​​{3}}。它说,

  

char *strcat(char *dest, const char *src);

这意味着它希望两个参数都是指向字符串的指针。现在,正如我们所知,指向int数组的指针不能被视为字符串,我们不能直接在您的情况下使用strcat()

所以,你要做的是,

  • 拿另一个缓冲区
  • lexicographical 格式一个接一个地复制<{em>> char数组和int数组元素的内容,以便特定索引,以便最终结果是两者的连接

现在,您有man page来帮助您解决此问题。它将格式化的o / p打印到提供的字符串

伪代码

char letter[100];   //populating value, not shown
int number[100];    //populating value, not shown

int i = 0;

char letterNum[100][32];

for (i = 0; i < 100; i++){
 if ( sprintf(letterNum[i], "%c%d", letter[i], number[i]) != 2)
             printf("Error in %d iteration\n", (i+1));
}

答案 2 :(得分:0)

非常感谢你的帮助! 我想,我需要尝试一个错误并自己测试一下......解释清楚且有用......加上给出的代码让我能够理解...... 非常感谢您的帮助..再次感谢您