我想将我的char数组转换为字符串,以便将其传递给函数。如果我有这个:
char array[3] = {'1', 'a', '/'};
我希望将其转换为
char *string = "1a/";
我只是在末尾添加一个NULL终结符吗?
答案 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 *字符串。
如果您有任何疑问,请随时提出。