我试图通过让用户在提示后输入数组的大小来确定数组的大小(因为我不知道每次测试会有多少等级)...
它似乎不喜欢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;
}
如何将数组大小作为参数传递,以便我可以接受任何大小的数组? (我将添加一个功能,它将取得所有成绩并通过字母将它们组合在一起)
答案 0 :(得分:3)
您有两种选择:
如果您的编译器支持C99可变长度数组,您可以在获得大小后声明数组:
scanf("%i", &numGrades);
char grades[numGrades];
如果没有,则必须在堆上动态分配数组:
scanf("%i", &numGrades);
char *grades = malloc(numGrades * (sizeof *grades));
答案 1 :(得分:2)
您将grades
声明为单个char
,而不是数组。在您阅读numGrades
之后将声明移至并使其成为VLA,如下所示:
char grades[numGrades];
或者使用动态分配:
char *grades = malloc(numGrades);
如果选择后者,请不要忘记free()
。