如何将整数数组内容复制到字符指针?
问题描述:
我有一个字符指针,char *buf;
我有一个整数数组,int console_buffer[256];
我需要将console_buffer
内容复制到字符buf。 我该怎么做? buf
和console_buffer
是不同结构的一部分。如何将整数数组内容复制到字符指针?
答
通过您的评论去,
buf = malloc(256); // 257 if console_buffer may be full without EOF
/* if you want to allocate just as much space as needed, locate the EOF in console_buffer first */
for(int i = 0; i < 256 && console_buffer[i] != -1; ++i){
buf[i] = (char)console_buffer[i];
}
答
如果您已经分配的内存为buf
,如果每个整数是0到9之间,你可以这样做:
for(int i = 0; i < 256; i++)
{
buf[i] = '0' + console_buffer[i]; /* convert 1 to '1', etc. */
}
如果整数是大于9,你可以使用sprintf
功能。
读你的新评论,或许你也可以从控制台缓冲区直接读取到字符数组,直到你有-1
(用整数比较检查,或通过strcmp
,或通过比较2最后达到你的目的字符到0
和1
)。
答
我认为这是一个更好的办法值转换为char
小号
int i = 0;
while (i <= 256) {
buf[i] = (char) console_buffer[i];
i++;
}
这个问题是病态的。你想如何在int和char之间进行转换? –
我会告诉你为什么我需要这个。我正在尝试执行读取系统调用。 console_buffer被声明为整型数组,因为遇到EOF时它返回-1,所以我知道我必须在这里停下来。实际上console_buffer将包含字符。最后,在读取console_biffer后,我需要将它复制到具有char * buf成员的过程控制块结构中。 – Maxwell
你可以用一个简单的循环来做到这一点。你试过什么了? –