C 字符串数组未在函数中获取正确的值

C 字符串数组未在函数中获取正确的值,c,C,我创建了一个字符串数组一个字符矩阵,我正在尝试创建一个函数来读取字符串并将它们存储在一个数组中。这是我做的函数: void input_strings(char **array, int n){ for (int i = 0; i < n; i++) { scanf("%s",&array[i]); printf("%s \n",&array[i]); } } } n和stringsize是足够大的全局变量。为什么程序会打印出来��

我创建了一个字符串数组一个字符矩阵,我正在尝试创建一个函数来读取字符串并将它们存储在一个数组中。这是我做的函数:

void input_strings(char **array, int n){
   for (int i = 0; i < n; i++) {
       scanf("%s",&array[i]);
       printf("%s \n",&array[i]);
   }
}
}

n和stringsize是足够大的全局变量。为什么程序会打印出来���� 而不是我输入的字符串

编辑:将矩阵从char**string\u array[n][stringsize]编辑为charstring\u array[n][stringsize],问题仍然存在

编辑2:所以问题是char矩阵与函数参数不兼容。我通过以下方式声明string_数组修复了这个问题

    char ** string_array = (char **) malloc(sizeof(char*)*n);
    for (int i = 0; i < n; ++i) {
        string_array[i] = (char *) malloc(sizeof(char)*stringsize);
    }

是的,传递地址的正确方法就是字符串数组。因此,输入字符串数组,n;甚至输入字符串和字符串数组[0][0],n;这是第一行第一列的地址。

是的,传递地址的正确方法就是字符串数组。因此,输入字符串数组,n;甚至输入字符串和字符串数组[0][0],n;这是第一行第一列的地址。

char**string_数组[n][stringsize];是一个二维字符数组**-带有未初始化的指针是的,我的错。我只是很快就改变了,我仍然遇到同样的问题。你的编译器应该给你一个关于输入字符串和字符串数组的警告,n;,as&string\u数组不是字符**,您永远不应该忽略编译器警告尝试从main调用函数,如:input\u strings字符串\u数组,n;不带&按值传递,不按值传递reference@JuMoGar试过了,结果还是一样。char**string_数组[n][stringsize];是一个二维字符数组**-带有未初始化的指针是的,我的错。我只是很快就改变了,我仍然遇到同样的问题。你的编译器应该给你一个关于输入字符串和字符串数组的警告,n;,as&string\u数组不是字符**,您永远不应该忽略编译器警告尝试从main调用函数,如:input\u strings字符串\u数组,n;不带&按值传递,不按值传递reference@JuMoGar试过了,结果还是一样。不,这两个都是错误的。没有起作用,问题依然存在。不,这两个都是错误的。没有起作用,问题依然存在。
    char ** string_array = (char **) malloc(sizeof(char*)*n);
    for (int i = 0; i < n; ++i) {
        string_array[i] = (char *) malloc(sizeof(char)*stringsize);
    }
    input_strings(string_array, n);