我有一个任务来创建一个包含学生姓名和年级的年级书,我被困在要求我添加新学生的地方。该课程只允许75名学生的名字长度为40。
因此,我编写了一个for循环来搜索数组,并且没有错误或警告,但是程序跳过了scanf函数,要求输入名称。
这里是代码:
#define STUDNO 75
#define NAMELENGTH 40
void super(int studNo, char name [STUDNO][NAMELENGTH],
int studMark1[STUDNO], int studMark2[STUDNO],
int studMark3[STUDNO], int pinNo[][3])
{
int i;
char newName;
int newNo;
printf("\n Add New Student\n");
printf("\nPlease enter a student number: \n");
scanf("%d", &newNo);
printf("Please enter the student name:\n");
scanf("%[^\n]", &newName);
for(i = studNo-1; i >= newNo; i--)
{
name[STUDNO+1][NAMELENGTH]=name[STUDNO][NAMELENGTH];
}
name[newNo][NAMELENGTH] = newName;
此问题非常普遍。当最后打印到控制台的内容被视为scanf函数的有效输入时,它将被读取为输入或完全不读取任何内容,而不会让用户在代码中输入内容。我再也无法获得更多的技术性知识了,因为我不确定100%是否会导致scanf函数中发生什么,但要解决此问题,您所要做的就是将最后打印的内容包括在控制台中。您的代码如下所示。