我想连接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 ...
答案 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()
。
所以,你要做的是,
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)
非常感谢你的帮助! 我想,我需要尝试一个错误并自己测试一下......解释清楚且有用......加上给出的代码让我能够理解...... 非常感谢您的帮助..再次感谢您