gcc 将整数数组转换为字符串

wqnecbli  于 2022-11-13  发布在  其他
关注(0)|答案(2)|浏览(206)

我有一个整型数组:

int s3[] = {97, 115, 100, 102, 103, 49, 50, 51, 37, 36, 33};

我需要它的字符串值"asdfg123%$!"
就像这样:

printf ("%s", s4);   // and output should be => asdfg123%$!
dgsult0t

dgsult0t1#

在循环中逐项复制数组,并将每个值存储到char中。然后用null终止该char数组,使其成为字符串。或者也可以不将s3声明为int

mklgxw1f

mklgxw1f2#

你想要这样的东西:

#include <stdio.h>
#include <string.h>

int main() {
  int s3[] = { 97, 115, 100, 102, 103, 49, 50, 51, 37, 36, 33 };
  // make sure s3 does not contain values above 127 (or 255 depending on
  // your platform).

  // temporary storage for the null terminated string
  char temp[100];   // must make sure s3 has no more than 99 elements

  // copy the values in s3 to temp as chars
  int i;
  for (i = 0; i < sizeof(s3)/sizeof(int) ; i++)
  {
    temp[i] = s3[i];
  }

  // null terminate 
  temp[i] = 0;   

  // now we can print it with `printf` and `%s` because
  // now `temp` is a null terminated string.
  printf("%s\n", temp);
}

sizeof(s3)s3数组的大小(以字节为单位),sizeof(int)int的大小,因此sizeof(s3)/sizeof(int)s3数组中的元素数。

进阶知识(略高于初级):

  • 实际上,你甚至应该写sizeof(s3)/sizeof(*s3),这样更简洁,因为我们不需要重复int类型。
  • 您可以使用malloc动态分配内存,而不是使用固定大小的char temp[100];,大小为sizeof(s3)/sizeof(*s3) + 1(对于空终止符为+1)。
  • ...或仅使用char temp[sizeof(s3)/sizeof(*s3)+1];

相关问题