将字符串数组复制到C中的另一个数组中

时间:2015-04-01 14:44:51

标签: c arrays char strcpy

我在C中创建一个单词搜索程序,它接受用户输入,然后选择一个全局单词数组并使用它来生成单词搜索。当我只使用其中一个全局数组而不是选择时,它可以工作,我想复制类别数组的内容,具体取决于用户对newArray的选择,可以与单词搜索一起使用。该程序在此刻输入选项后崩溃,这就是我所拥有的。

switch(choice)
{
    case 1: choseArray(newArray, massEffect);
    break;
    case 2: choseArray(newArray, fallout3);
    break;
    case 3: choseArray(newArray, elderScrolls);
    break;
    case 4: choseArray(newArray, gameOfThrones);
    break;
    case 5: choseArray(newArray, breakingBad);
    break;
    default: printf("Enter a valid option!");
}

void choseArray(char** newArray, char** category)
{
     int i;
     for(i=0;i<6;i++)
     {
         strcpy(newArray[i], category[i]);
     }
}

数组看起来像这样,现在全局声明

char gameOfThrones[6][250] = {"KINGSLANDING", "TYRIAN", "STARK", "LANISTERS", "WESTEROS", "WINTERFELL"};
char breakingBad[6][250] = {"JESSE", "WALT", "HEISENBERG", "SAUL", "GUSTAVO", "BREAKFAST"};
char newArray[6][250];

2 个答案:

答案 0 :(得分:3)

你没有得到编译器警告吗?尝试声明函数以匹配传递的参数。

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

void choseArray(char newArray[][250], char category[][250]){
    int i;
    for(i=0;i<6;i++)
        strcpy(newArray[i], category[i]);
}

int main()
{
    char gameOfThrones[6][250] = {"KINGSLANDING", "TYRIAN", "STARK", "LANISTERS", "WESTEROS", "WINTERFELL"};
    char breakingBad[6][250] = {"JESSE", "WALT", "HEISENBERG", "SAUL", "GUSTAVO", "BREAKFAST"};
    char newArray[6][250];
    choseArray(newArray, gameOfThrones);
    return 0;
}

你这样做的方式

char **newArray

是指向指针的指针,或指针数组。

答案 1 :(得分:2)

如果您在此表单中声明单词列表......

char gameOfThrones[6][250] = { ... };

然后它们是char s的数组数组。函数参数类型char **是指向char 指针的指针,甚至不能直接比较。你的编译器应该对此有所了解。

假设newArray与基本单词列表的类型相同,您应该声明您的函数:

void choseArray(char newArray[][250], char category[][250]) { ... }

......或者可能是这样:

void choseArray(char (*newArray)[250], char (*category)[250]) { ... }

...匹配实际的参数类型。在这种情况下,你的函数体可能按原样运行。