Mik*_*ler 1 c++ pointers c-strings dynamic-arrays
我正在尝试使用指针连接两个动态c数组(包含字符串).我在网上搜索了一堆使用strcat的东西,但我需要学习如何使用指针来做这件事.我还不清楚动态c阵列到底是什么,我只知道我必须使用"new".这是我目前无法编译的代码:
#include <iostream>
using namespace std;
#define MAX_CHAR 50
void append(char*, char*);
int main()
{
char *str1 = new char[MAX_CHAR];
char *add1 = new char[MAX_CHAR];
str1 = "This string";
add1 = " add this one";
append(str1, add1);
cout << str1;
delete [] add1;
delete [] str1;
return 0;
}
void append(char *str, char *add)
{
while(*str != '\0')
str++;
while(*add != '\0')
{
*str = *add;
add++;
str++;
}
*str = '\0';
}
Run Code Online (Sandbox Code Playgroud)
这部分不符合你的想法:
str1 = "This string";
add1 = " add this one";
Run Code Online (Sandbox Code Playgroud)
您正在尝试将字符串文字("This string")分配给字符串指针(str1).这不起作用,因为:
new一行分配的指针const char [],因此您应该期望编译器错误/警告).因此,您需要手动将字符串文字复制到char数组中.您可以使用标准库函数strcpy(这需要<cstring>):
std::strcpy(str1, "This string");
std::strcpy(add1, " add this one");
Run Code Online (Sandbox Code Playgroud)