马上,我需要为我的作业使用动态分配的字符数组,所以不建议我只使用字符串。我需要创建一个接受字符数组作为参数的方法,并使用strcpy将该字符插入到char *中。如何在不首先初始化char *的情况下执行此操作?
到目前为止,这是我的代码:
char* char_array;
char test_array[] = {'t','e','s','t','\0'};
strcpy(char_array, test_array);
答案 0 :(得分:4)
你的char_array只是一个整体指针。您需要为它动态分配内存,然后执行strcpy。
char* char_array = new char[6];
char test_array[] = {'t','e','s','t','\0'};
strcpy(char_array, test_array);
或者按照Joachim的建议,您可以使用strdup()复制字符串 - 它将分配内存并将字符串复制到其中。
在这两种情况下,一旦完成后,不要忘记释放()(或删除[])生成的内存。
答案 1 :(得分:0)
除非你实际为char_array
到malloc
或new
分配了一块内存,否则你不能这样做。
int length = 6;
char* char_array = (char*) malloc(sizeof(char) * length);
或
char* char_array = new char[6];
答案 2 :(得分:0)
char * char_array = NULL;
void yourFunc(char your_array[]) {
if (NULL != char_array) {
free(char_array);
char_array = NULL;
}
char_array = (char *)malloc(sizeof(char) * strlen(your_array));
strcpy(char_array, your_array);
}
答案 3 :(得分:0)
你声明你需要一个接受char [] / char *
的方法/函数
你说过你的约束......
这似乎是教学目的的低水平
我假设空终止字符数组和有效源字符数组
//function accepts character array
char * charseqduplicate(char * s)
{
//low level c
const int len = strlen(s) + 1;;
char * copy = new char[len];
strcpy(copy, s);
//remember to delete or use something like unique_ptr
return copy;
}
void letsdothis()
{
//low level c
char test[] = {'y','e','s',char(0)};
char * dup = charseqduplicate(test);
cout << dup;
delete [] dup;
}