我正在尝试将年级(1-10)读入称为moduleGrades的数组。
fgets(moduleGrades[i]-1, sizeof(moduleGrades), stdin);
导致错误,但是我键入的正是我所需要的。我想存储3个成绩(如果输入的模块数为3)
非常感谢。
#include<stdio.h>
#include <string.h>
char name[30];
int moduleNumber;
char moduleGrades[2];
int main(int argc, char **argv)
{ //read name & module amount
printf ("Please enter your name: ");
fgets(name, sizeof(name), stdin);
printf ("How many Modules: ");
scanf("%d", &moduleNumber);
int i;
for (i = 1; i <= moduleNumber; i++)
{
printf ("Please enter module %d grade ", i);
fgets(moduleGrades[i]-1, sizeof(moduleGrades), stdin);
}
printf("%d", moduleGrades[0]);
printf("%d", moduleGrades[1]);
printf("%d", moduleGrades[2]);
return 0;
}
如果您要输出三个字符,如输出所示,则您的数组还必须能够容纳三个字符:
char moduleGrades[2];
也在此循环:
int i;
for (i = 1; i <= moduleNumber; i++)
这本身并没有错,因为您减去了循环内要使用的1
,但我会这样做,而只是将其放在此位置:
for (int i = 0; i < moduleNumber; i++)
循环内的fgets
调用是错误的。您正在给它一个char
而不是一个指向char
的指针。除了使用fgets
,我将再次使用scanf
:
scanf(" %c", &moduleGrades[i]);
[打印您读入的那些char
时,也需要使用%c
格式说明符:
printf("%c", moduleGrades[0]);
这样,它将打印您先前阅读的char
。例如,如果您按下A
,它将打印A
。使用%d
,可能会显示65
,但这是未定义的行为,因此可能会发生任何事情,并且无法保证确切会发生什么。