gpt4 book ai didi

c++ - 使用指针修改动态字符数组

转载 作者:行者123 更新时间:2023-11-30 00:50:57 25 4
gpt4 key购买 nike

我正在尝试使用指针连接两个动态 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';
}

最佳答案

这部分并没有像你想的那样:

str1 = "This string";
add1 = " add this one";

您正在尝试将字符串文字 ( "This string" ) 分配给字符串指针 ( str1 )。这是行不通的,因为:

  1. 你基本上扔掉了你刚刚用new分配的指针一行前和
  2. 字符串文字在运行时无法修改(文字的类型为 const char [] ,因此您应该预料到编译器错误/关于此的警告)。

因此,您将需要手动将字符串文字复制到您的 char 数组中。您可以使用标准库函数 strcpy为此(这需要 <cstring> ):

std::strcpy(str1, "This string");
std::strcpy(add1, " add this one");

关于c++ - 使用指针修改动态字符数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23283883/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com