将整数数组转换为字符串

时间:2010-01-13 12:17:20

标签: c

一个函数返回一个整数的aray,我希望它传递给另一个搜索某些模式的函数。但是第二个函数需要一个字符串。

示例:

int IArray = {1, 2, 3};
// should be coverted into "123"

是否有直接功能?如果没有,我如何将整数数组转换为字符串?

6 个答案:

答案 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 );

......但如果我是你,我就不会: - )