c - 如何在C中将一个char指针数组复制到另一个

标签 c arrays pointers char

我正在尝试将一个 char 指针数组存储到另一个 char 指针数组。我遇到了同样的段错误。

int main(int argc, const char* argv[])
{   
    int argcCpy = argc;
    char* argvCpy[10] = {};

    for(argcCpy = argc; argcCpy>0; argcCpy--)
    {   
        argvCpy[argcCpy] = (char *) malloc(strlen(argv[argcCpy]));
        memcpy(argvCpy[argcCpy], argv[argcCpy], strlen(argv[argcCpy]));
        printf("\nCount: %d, string: %s", argcCpy, argvCpy[argcCpy]);
    }
    return 0;
}

我花了足够多的时间来完成这项工作,但我做不到。此外,已经提出了同样的问题,但也没有得到回答。如果有人可以让我知道相同的工作代码,那将非常有帮助。

希望得到解答。

未处理的类似问题的链接 -- C Beginner - Copying a char *array to another char *array

谢谢。

最佳答案

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

int main(int argc, const char* argv[])
{
    int argcCpy = argc;
    char* argvCpy[10] = {};

    if (argc > 9)
    {
        return 1;
    }

    for(int i = argc; i > 0; i--)
    {
        if (argv[i] == NULL)
        {
            argvCpy[i] = NULL;
        }
        else
        {
            argvCpy[i] = (char *) malloc(strlen(argv[i]) + 1);
            if (argvCpy[i] != NULL)
            {
                strcpy(argvCpy[i], argv[i]);
            }
        }
    }

    for (int i = 0; i <= argcCpy; i++)
    {
        if (argvCpy[i] != NULL)
        {
            printf("Count: %d, string: %s\n", i, argvCpy[i]);
        }
        else
        {
            printf("Count: %d, string is null\n", i);
        }
    }

    return 0;
}

检查 argc 是否太高。 argv[argc] 为 NULL,请考虑到这一点。 使用strcpy,并为结束的\0分配足够的空间。

编辑:第二个 for 循环以显示内容。

关于c - 如何在C中将一个char指针数组复制到另一个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36565328/

相关文章:

javascript - 数组只有 4 个元素,但即使删除空元素后,它也显示为有 5 个元素

c++ - 将文本文件内容放入二维数组

c - 在 c 中,赋值使指针无需强制转换,反之亦然

java - 为什么将 k-ary 树表示为左子树、右兄弟树?

C 参数转换

c - fgets - 省略了 c 中的最后一行

javascript - ESLint 说数组从未被修改,即使元素被插入数组

c - 如何在C中访问char指针数组

c - makecontext函数指针[错误: invalid use of void expression]

c - Eclipse - 在 printf() 调用后将 fflush(stdout) 作为默认值