如何编写动态数量的行并将它们分配给 C 中的数组

How can I write a dynamic amount of lines and assign them to array in C

您好,我正在尝试将一些行写入 C 中的数组,行数取决于用户的第一个输入。

我的程序在第二次迭代后意外结束,即使我要求循环 8 次。

int main(){
    char line[32];
    fgets(line, 32, stdin); //Get the (int)amount of future input lines
    int n = atoi(line); 

    char *array[n]; // Create an array to hold the future lines
    for (int i = 0 ; i < n ; i++) {
        fgets(array[i], 32, stdin); //Get a line and assign to array
    }   
    for (int i = 0 ; i < n ; i++) {
        printf("%s\n", array[i]);
    }   
    return 0;
char *array[n];

这一行创建了一个包含 n 个 char * 类型元素的数组,因此是一个指针数组。由于它们未初始化,您最终会将字节写入内存中的任意地址,从而导致崩溃。

您需要使用 malloc() 为数组的每个元素分配 32 个字节的内存,或者声明一个包含 n 个 char[32] 元素的数组(因此每个元素都是一个 32 个字符的数组):

char array[n][32];