Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 将c字符串复制到字符数组中_C++_Arrays - Fatal编程技术网

C++ 将c字符串复制到字符数组中

C++ 将c字符串复制到字符数组中,c++,arrays,C++,Arrays,C语言新手,仍然掌握指针。我试图将一个c字符串的副本添加到一个char数组中,这样 char temp[40]; temp[0] = 'a'; temp[1] = 'b'; temp[2] = 'c'; temp[3] = NULL; char *container[40] = {0}; strcpy(container[0], temp); cout << container[0] << endl; chartemp[40]; 温度[0]=“a”; 温度[1]=“b”

C语言新手,仍然掌握指针。我试图将一个c字符串的副本添加到一个char数组中,这样

char temp[40];
temp[0] = 'a';
temp[1] = 'b';
temp[2] = 'c';
temp[3] = NULL;
char *container[40] = {0};
strcpy(container[0], temp);
cout << container[0] << endl;
chartemp[40];
温度[0]=“a”;
温度[1]=“b”;
温度[2]=“c”;
temp[3]=NULL;
char*容器[40]={0};
strcpy(容器[0],温度);

cout您正确地使用了strcpy,但是没有给它正确的内存。这就是为什么您的两个程序都有未定义的行为——它们写入由未初始化指针指向的内存

要解决此问题,请使用
malloc
容器的每个元素分配内存:

char temp[40];
temp[0] = 'a';
temp[1] = 'b';
temp[2] = 'c';
temp[3] = NULL;
char *container[40] = {0};
container[0] = (char*)malloc(strlen(temp)+1);
strcpy(container[0], temp);
cout << container[0] << endl;
chartemp[40];
温度[0]=“a”;
温度[1]=“b”;
温度[2]=“c”;
temp[3]=NULL;
char*容器[40]={0};
容器[0]=(char*)malloc(strlen(temp)+1);
strcpy(容器[0],温度);

cout您正确地使用了strcpy,但是没有给它正确的内存。这就是为什么您的两个程序都有未定义的行为——它们写入由未初始化指针指向的内存

要解决此问题,请使用
malloc
容器的每个元素分配内存:

char temp[40];
temp[0] = 'a';
temp[1] = 'b';
temp[2] = 'c';
temp[3] = NULL;
char *container[40] = {0};
container[0] = (char*)malloc(strlen(temp)+1);
strcpy(container[0], temp);
cout << container[0] << endl;
chartemp[40];
温度[0]=“a”;
温度[1]=“b”;
温度[2]=“c”;
temp[3]=NULL;
char*容器[40]={0};
容器[0]=(char*)malloc(strlen(temp)+1);
strcpy(容器[0],温度);

cout您正确地使用了strcpy,但是没有给它正确的内存。这就是为什么您的两个程序都有未定义的行为——它们写入由未初始化指针指向的内存

要解决此问题,请使用
malloc
容器的每个元素分配内存:

char temp[40];
temp[0] = 'a';
temp[1] = 'b';
temp[2] = 'c';
temp[3] = NULL;
char *container[40] = {0};
container[0] = (char*)malloc(strlen(temp)+1);
strcpy(container[0], temp);
cout << container[0] << endl;
chartemp[40];
温度[0]=“a”;
温度[1]=“b”;
温度[2]=“c”;
temp[3]=NULL;
char*容器[40]={0};
容器[0]=(char*)malloc(strlen(temp)+1);
strcpy(容器[0],温度);

cout您正确地使用了strcpy,但是没有给它正确的内存。这就是为什么您的两个程序都有未定义的行为——它们写入由未初始化指针指向的内存

要解决此问题,请使用
malloc
容器的每个元素分配内存:

char temp[40];
temp[0] = 'a';
temp[1] = 'b';
temp[2] = 'c';
temp[3] = NULL;
char *container[40] = {0};
container[0] = (char*)malloc(strlen(temp)+1);
strcpy(container[0], temp);
cout << container[0] << endl;
chartemp[40];
温度[0]=“a”;
温度[1]=“b”;
温度[2]=“c”;
temp[3]=NULL;
char*容器[40]={0};
容器[0]=(char*)malloc(strlen(temp)+1);
strcpy(容器[0],温度);


CUT不是使用C,而是C++。<代码>容器[0 ] < /C>只是指向<代码> char < />代码。在调用
strcpy
.C或C之前,必须将其指向足够的内存??是哪一个?这些是C技术,但C++语言。而且,你在你的问题中使用这两个术语……C字符串也是一个<代码> char < /Cuffel>数组……你不使用C,但是C++。<代码>容器[0 ] < /C>只是指向<代码> char < />代码。在调用
strcpy
.C或C之前,必须将其指向足够的内存??是哪一个?这些是C技术,但C++语言。而且,你在你的问题中使用这两个术语……C字符串也是一个<代码> char < /Cuffel>数组……你不使用C,但是C++。<代码>容器[0 ] < /C>只是指向<代码> char < />代码。在调用
strcpy
.C或C之前,必须将其指向足够的内存??是哪一个?这些是C技术,但C++语言。而且,你在你的问题中使用这两个术语……C字符串也是一个<代码> char < /Cuffel>数组……你不使用C,但是C++。<代码>容器[0 ] < /C>只是指向<代码> char < />代码。在调用
strcpy
.C或C之前,必须将其指向足够的内存??是哪一个?这些是C技术,但C++语言。您在问题中使用了这两个术语……而且,C字符串是一个
char
array….可能值得一提的是,首先不要这样做?你还拼错了“容器”。问题。这是否等同于char*容器[]={“abc”,“def”}。在幕后,参数是否以CString的形式存储并为其分配内存?注意:我意识到它们是静态值。@zzzzz是的,这在内存布局方面是等效的,除了两件事:容器将有两个元素而不是40,并且您需要用
常量声明它
const char*container[40]
,因为C++要求C字符串被声明为常量,所以首先应该警告不要执行这些操作。你还拼错了“容器”。问题。这是否等同于char*容器[]={“abc”,“def”}。在幕后,参数是否以CString的形式存储并为其分配内存?注意:我意识到它们是静态值。@zzzzz是的,这在内存布局方面是等效的,除了两件事:容器将有两个元素而不是40,并且您需要用
常量声明它
const char*container[40]
,因为C++要求C字符串被声明为常量,所以首先应该警告不要执行这些操作。你还拼错了“容器”。问题。这是否等同于char*容器[]={“abc”,“def”}。在幕后,参数是否以CString的形式存储并为其分配内存?注意:我意识到它们是静态值。@zzzzz是的,这在内存布局方面是等效的,除了两件事:容器将有两个元素而不是40,并且您需要用
常量声明它
const char*container[40]
,因为C++要求C字符串被声明为常量,所以首先应该警告不要执行这些操作。你还拼错了“容器”。问题。这是否等同于char*容器[]={“abc”,“def”}。在幕后,参数是否以CString的形式存储并为其分配内存?注意:我意识到它们是静态值。@ ZZZZ是的,这将是一个等同于内存布局的问题,除了两个东西:容器将有两个元素而不是40个,并且您需要声明它<代码> const char容器[40 ] < /C> > <代码> const < /C> >,因为C++请求