在 C 中创建字符串数组

Creating an Array of Strings in C

我在使用命令行界面时遇到了这个问题。 我正在尝试将输入存储在一个字符串数组中。但是当我 运行 我的代码 我遇到分段错误?

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

int main(int num, char **str) {

    int i;

    char owner[20];
    char *keys[5];

    int j = 0;


    for (i = 1; i < num; i++) {

        if (i == 1) {

            strcpy(owner, str[i]);
            printf("%s", owner);
        }
        else {

            keys[i] = malloc(10 * sizeof(char));
            strcpy(keys[j], str[i]);

            printf("%s", keys[j]);

            j++;

        }
    }   
}

在else语句中你应该写

    else {

        keys[j] = malloc( strlen( str[i] ) + 1 );
        strcpy(keys[j], str[i]);

        printf("%s", keys[j]);

        j++;
    }

您还应该提供数组所有者足够大以存储字符串 str[1]。