gpt4 book ai didi

C 初学者 - 将 char *array 复制到另一个 char *array

转载 作者:行者123 更新时间:2023-11-30 15:39:50 24 4
gpt4 key购买 nike

我已经为此苦苦挣扎了很长一段时间。基本上,我需要将一个 char 指针数组复制到另一个 char 指针数组。

现在,我有这个功能:

void copyArray(char *source[], char *destination[]) {
int i = 0;

do {
destination[i] = malloc(strlen(source[i]));
memcpy(destination[i], source[i], strlen(source[i]));
} while(source[i++] != NULL);
}

这会导致段错误。有人可以帮忙吗?

谢谢!

编辑:示例程序

#include <string.h>
#include <stdio.h>
#include <stdlib.h>

// Copy the contents of one array into another
void copyArray(char *source[], char *destination[]){
// printf("In copy array");
int i = 0;

do {
destination[i] = malloc(strlen(source[i]));
memcpy(destination[i], source[i], strlen(source[i]));
} while(source[i++] != NULL);
}

void addToHistory(char *history[][40], char *args[]){
int i;
for(i = 1; i < 10; i++){
copyArray(history[i], history[i-1]);
}
i = 0;
copyArray(args, history[0]);
}

int main(void){
char *history[10][40];
char *args[40];

history[0][0] = NULL;

args[0] = "ls";
args[1] = NULL;

addToHistory(history, args);
}

最佳答案

  1. 在将 source 数组中的最后一个元素传递给 copyArray 之前,请确保该元素为 NULL

  2. copyArray中,放置while而不是do,并仅增加i< strong>在循环的末尾。

除了上述所有内容,您只需在函数 copyArray 中将 i++ 更改为 ++i 即可。

但是如果传递给该函数的 source 数组中的第一个元素是 NULL,它将崩溃。

关于C 初学者 - 将 char *array 复制到另一个 char *array,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21290255/

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