我有一组字符,我想设置为1变量。我该怎么做呢例如,我将拥有以下代码:
char list[5] = {'B','O','B','B','Y'};
我将如何拥有它以便我可以将其设置为变量以使其具有:
char *name = "BOBBY"
从上面显示的列表中提取值。
答案 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
,因为你的数组不是以空值终止的。