C 无法将大小扫描到数组中

C 无法将大小扫描到数组中,c,C,这些是我得到的错误。 错误C2057:应为常量表达式 错误C2466:无法分配常量大小为0的数组 错误C2133:“数组”:未知大小 任何帮助都将不胜感激。有些编译器不支持可变长度数组,不幸的是,您的编译器似乎就是其中之一 您可以使用stdlib.h中的malloc()动态分配数组 int n; printf("How many?"); scanf("%d", &n); int array[n]; 可变长度数组需要: C99 C11及更高版本

这些是我得到的错误。
错误C2057:应为常量表达式
错误C2466:无法分配常量大小为0的数组 错误C2133:“数组”:未知大小


任何帮助都将不胜感激。

有些编译器不支持可变长度数组,不幸的是,您的编译器似乎就是其中之一

您可以使用
stdlib.h
中的
malloc()
动态分配数组

int n;
printf("How many?");
scanf("%d", &n);

int array[n];

可变长度数组需要:

  • C99

  • C11及更高版本,未定义
    \u STDC\u NO\u VLA\u


  • 数组大小必须大于0

    int n;
    printf("How many?");
    scanf("%d", &n);
    
    int* array = malloc(sizeof(*array) * n);
    

    请说明您正在使用的编译器。看起来像Microsoft编译器-不支持可变长度数组(VLA)。看起来像Visual Studio不支持VLA。这是否回答了您的问题?C99?否则int*array=malloc(n*sizeof(int));是的,是visual studio。使用malloc是有效的。谢谢各位。
    int n;
    printf("How many?");
    if (scanf("%d", &n) == 1 && n > 0) {
      // Success
      int array[n];
      ...
    }