C - 声明一个具有未定义值的数组

标签 c

我试图通过让用户在提示后输入数组的大小来确定数组的大小(因为我不知道每次测试我会有多少成绩)...

它似乎不喜欢 scanf ("%c",&grades[i]);

这行

这是整个函数:

#include <stdio.h>

 int main (void)
{
int numGrades;
char grades;
char i;
int x;


printf ("Enter The Amount Of Numbers In Your Array: ");
scanf("%i", &numGrades);/*Stores Amount Of Grades In The Array*/

for (x = 0; x < numGrades; ++x)
  {
  printf ("\nEnter the grade: ");
  scanf ("%c",&grades[i]);
  }

return 0; 
}

如何将数组大小作为参数传递,以便我可以接受任何大小的数组? (我将添加一个函数,它将获取所有成绩并将它们按字母组合在一起)

最佳答案

你有两个选择:

  1. 如果您的编译器支持 C99 可变长度数组,您可以在获取大小后声明数组:

    scanf("%i", &numGrades);
    char grades[numGrades];
    
  2. 如果不是,则必须在堆上动态分配数组:

    scanf("%i", &numGrades);
    char *grades = malloc(numGrades * (sizeof *grades));
    

关于C - 声明一个具有未定义值的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15264613/

相关文章:

字符指针和字符串

c - 为什么当我输入 2 个或更多连续制表符时,用适当数量的空格替换制表符的 C 程序不起作用

c - 如何在 ARM 内联汇编程序中使用特定寄存器

c++ - PUSHMARK(SP) 中的 Perl 5.12.3 C/C++ 代码崩溃;在 Solaris 5.9 上出现段错误

c - Eclipse 控制台在程序终止之前不会打印

c - "gcc -DSOMENAME"; "SOMENAME"未定义

c - 链表中使用递归反转k个节点的最优解

c - 流缓冲问题

c - Linux/Windows 上的线程/进程比较

c - 如何使用共享内存共享 char ** 变量