一个函数返回一个整数的aray,我希望它传递给另一个搜索某些模式的函数。但是第二个函数需要一个字符串。
示例:
int IArray = {1, 2, 3};
// should be coverted into "123"
是否有直接功能?如果没有,我如何将整数数组转换为字符串?
答案 0 :(得分:4)
没有直接的功能。
您必须使用sprintf。
答案 1 :(得分:2)
C stdlib中没有任何内容可以做到这一点,但编写字符串操作并不困难:
#include <assert.h>
int transform_ints_to_string(int const* data, int data_length,
char* output, int output_length)
{
// if not enough space was available, returns -1
// otherwise returns the number of characters written to
// output, not counting the additional null character
// precondition: non-null pointers
assert(data);
assert(output);
// precondition: valid data length
assert(data_length >= 0);
// precondition: output has room for null
assert(output_length >= 1);
int written = 0;
for (; data_length; data_length--) {
int length = snprintf(output, output_length, "%d", *data++);
if (length >= output_length) {
// not enough space
return -1;
}
written += length;
output += length;
output_length -= length;
}
return written;
}
示例:
int main() {
char buf[100] = "";
int data[] = {1, 2, 3};
if (transform_ints_to_string(data, 3, buf, sizeof buf) == -1) {
puts("not enough room");
}
else {
printf("%s\n", buf);
}
return 0;
}
答案 2 :(得分:1)
我有直接的功能吗? 可以用?
NO
答案 3 :(得分:1)
大多数c和c ++编译器支持itoa
函数,它将int转换为char *,或者您可以使用sprintf执行此操作。接下来是将所有字符串连接成一个字符串,您可以使用strcat
。按照链接,您将找到这两个功能的示例。
答案 4 :(得分:0)
如果您的IArray
变量包含[0,9]范围内的整数值,那么您可以执行以下操作(伪代码):
string := ""
While more numbers:
string.append(next + '0')
在C中,保证'0'
,'1'
,...,'9'
具有连续的整数值。
如果这不是您想要的,您需要更清楚地定义问题。
答案 5 :(得分:0)
int IArray = {1,2,3};
那不是C!
你的意思是;
int IArray [3] = {1,2,3};
你可以这样做......
for( loop = 0 ; loop < 3 ; loop++ )
*(((char *) IArray)+loop) = '0' + IArray[loop];
*(((char *) IArray)+loop) = 0;
printf( "%s\n", (char *) IArray );
......但如果我是你,我就不会: - )