如何将char数组转换为C中的字符串?

时间:2017-09-13 07:01:35

标签: c arrays string pointers

我想将我的char数组转换为字符串,以便将其传递给函数。如果我有这个:

char array[3] = {'1', 'a', '/'};

我希望将其转换为

char *string = "1a/";

我只是在末尾添加一个NULL终结符吗?

3 个答案:

答案 0 :(得分:4)

只需添加零分隔符

char array[4] = {'1', 'a', '/', '\0'};

答案 1 :(得分:4)

像这样声明你的数组

char array[] = {'1', 'a', '/', '\0'};  

char array[] = "1a/";

答案 2 :(得分:0)

首先,char数组和char指针大致相同,有时可以互换使用,但最终,char []具有已知大小,可以使用sizeof()函数,而char *只指向未知长度的连续内存的第一个地址,因此sizeof将返回整数的默认大小(32位系统上4个,64位系统上8个),以指示存储地址所需的大小。

但通常带字符串的规则是它们必须以null结尾,因此如果使用char []或char *则无关紧要。见下面的例子。

char array[4] = {'1', 'a', '/', 0};

OR

char string[4];
memset(&string[0], 0x00, sizeof(string));
memcpy(&string[0], &array[0], 3);

OR

char* string;
string = malloc(sizeof(array)+1);
memset(&string[0], 0x00, sizeof(array)+1);
memcpy(&string[0], &array[0], sizeof(array));

然后将字符串作为char *传递就像:

void foo (char* bar, int n)
{
  // do something with bar
}

并将其命名为

foo(&string[0], strlen(string));

重要的是要注意,strlen只能用于以null结尾的char *字符串。

如果您有任何疑问,请随时提出。