如何将一组chars连接成1个变量?

时间:2016-11-16 00:05:15

标签: c arrays char

我有一组字符,我想设置为1变量。我该怎么做呢例如,我将拥有以下代码:

char list[5] = {'B','O','B','B','Y'};

我将如何拥有它以便我可以将其设置为变量以使其具有:

char *name = "BOBBY"

从上面显示的列表中提取值。

3 个答案:

答案 0 :(得分:2)

除了其他答案之外,还有一个更简单的解决方案,适用于符合POSIX 1-2008的系统,例如linux和OS / X:

char *name = strndup(list, sizeof(list));

答案 1 :(得分:1)

由于字符串不是空终止,你不能假设像strcpy这样的函数会成功 - 你需要在O(n)中做一些逐个复制每个字符的东西:

char *str = NULL;
int len_orig = sizeof(list);
int i;

str = malloc(len_orig+1);
if(!str)
{
    perror("malloc");
    exit(EXIT_FAILURE);
}
for(i = 0; i < len_orig; i++)
{
    str[i] = list[i];
}
str[len_orig]=0;

// use str...

free(str);

答案 2 :(得分:0)

char* temp = malloc(sizeof(char) * 6); // 6 because 5 + 1 for null terminator
for(int i = 0; i < 5; ++i)
    temp[i] = list[i];
temp[5] = '\0';

你可以这样做,我不会使用strcpy,因为你的数组不是以空值终止的。