Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays 如何从C中的输入读取字符串数组并传递给函数?_Arrays_C_String_Function - Fatal编程技术网

Arrays 如何从C中的输入读取字符串数组并传递给函数?

Arrays 如何从C中的输入读取字符串数组并传递给函数?,arrays,c,string,function,Arrays,C,String,Function,我一整天都在忙这个。我希望能够在C中创建一个字符串数组,并将该数组传递给PrintStuff函数。我不想将参数更改为PrintStuff,但仍然可以使用。需要帮忙吗 void PrintStuff(const char **arr) { for (int i = 0; i < 5; ++i) { printf ("%s\n", arr[i]); } } int main () { //This works //char *

我一整天都在忙这个。我希望能够在C中创建一个字符串数组,并将该数组传递给PrintStuff函数。我不想将参数更改为PrintStuff,但仍然可以使用。需要帮忙吗

void PrintStuff(const char **arr) {
  for (int i = 0; i < 5; ++i) {
        printf ("%s\n", arr[i]);
    }
}

int main ()
{
    //This works
    //char * array[5] = { "this", "is", "a", "test", "megan"};

    //This doesn't work
    char * array[5];
    for (int i=0;i<5;i++)
    {
        //scanf("%9s", array[i]);
        fgets(array[i], 10, stdin);
    }

    Sort(array, 0, 5 - 1);
}
void打印材料(常量字符**arr){
对于(int i=0;i<5;++i){
printf(“%s\n”,arr[i]);
}
}
int main()
{
//这很有效
//字符*数组[5]={“this”、“is”、“a”、“test”、“megan”};
//这不管用
字符*数组[5];

对于(inti=0;i首先了解什么是
char*array[5]

这只是指向
char*
的5个指针的数组,所以在使用它们之前,每个指针都需要内存

char* array[5] = NULL;
int noe = sizeof(array) / sizeof (array[0]);

for(int a = 0; a < noe; a++) {
    if( !(array[a] = malloc(BUFFER_SIZE))
        printf("malloc failed at %d entry\n", a);
}
char*array[5]=NULL;
int noe=sizeof(数组)/sizeof(数组[0]);
对于(int a=0;a
使用完后,别忘了释放它们

for(int a = 0; a < noe; a++) {
    if(array[a]) {
        free(array[a]);
        array[a] = NULL;
    }
}
for(int a=0;a
您有五个指针。它们指向哪里?哪里都没有。您必须分配一些空间。请查看函数
malloc
,但确保检查返回值是否有错误。您也应该为
fgets
执行此操作。您还可以静态分配一些空间,如
char array[5][100]
@DanielWalker,是的,我们可以,因为OP使用指针,所以建议这样做。@klutt,你是对的,我只是把5个指针的数组写成5个指向5个数组的指针,不确定OP是否理解如果我说指针数组,我可以更正。