gpt4 book ai didi

c - 复制两个字符串数组

转载 作者:行者123 更新时间:2023-11-30 15:42:08 25 4
gpt4 key购买 nike

我有 const char 数组,我想更改(排序)其中的贵重元素。所以我需要创建第二个,它不会是常量(我相信没有其他方法)。该字段具有固定的列数 (2),但没有固定的行数。

所以首先我尝试了这个:

count = 0;           // count how many rows (i have 100% Null at the end)
while(arrayConst[count][0]){
count ++;
}

char* arrayEditable [count][2]; // deslare new field

for(i = 0; i < count; i++){ // and copy everithing to new one
arrayEditable[i][0] = (char*)arrayConst[i][0];
arrayEditable[i][1] = (char*)arrayConst[i][1];
}

这工作得很好(程序正在运行),除了我从编译器收到此消息:

ISO C++ forbids variable length array ‘arrayEditable’

所以看起来我需要动态分配它。我尝试过这样的事情:

count = 0;
while(arrayConst[count][0]){
count ++;
}

char (*arrayEditable)[2];
arrayEditable = (char (*)[2])malloc(count * 2 * sizeof(char));

for(i = 0; i < count; i++){
arrayEditable[i][0] = arrayConst[i][0];
arrayEditable[i][1] = arrayConst[i][1];
}

但它仍然不起作用 - 现在我得到一些奇怪的信息:

expected ‘const char *’ but argument is of type ‘char’|

而且我也相信,我错误地分配了该字段,因为我不知道该字符串有多长,以便它可以溢出(但也许我弄错了)。那么我应该如何复制该字段?我只需要不需要 const 字段来更改其中的值(排序);

最佳答案

您标记了此 C,并且您正在使用可变长度数组 (VLA),这是 C 的一项功能。代码风格也是C,绝对不是C++。然而,您的编译器错误表明您正在尝试使用 C++ 编译器来编译 C 代码,这是错误的,您应该立即停止这样做。

使用 C 编译器编译代码,错误就会消失。

哦,当我们这样做时:do not ever cast the return value of malloc()!只是不要。

关于c - 复制两个字符串数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20304211/

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