在C中向数组添加元素

我有一个任务来创建一个包含学生姓名和年级的成绩簿,但我被困在要求我添加新学生的地方。该课程仅允许75名学生使用NAMELENGTH为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;
chinaoct 回答:在C中向数组添加元素

这个问题很常见。当最后打印到控制台的内容被视为scanf函数的有效输入时,它将被读取为输入或完全不读取任何内容,而不会让用户在代码中输入内容。我再也无法获得更多的技术性知识了,因为我不确定100%是否会导致scanf函数中发生什么,但要解决此问题,您所要做的就是将最后打印的内容包括在控制台中。您的代码如下所示。

#include <stdio.h>

int main(void) {
  char newName;
  int newNo;

  printf("\nPlease enter a student number: \n");
  scanf("%d",&newNo);
  printf("Please enter the student name:\n");
  scanf("\n%[^\n]",&newName);
  printf("\n%c\n",newName); //To check if it's working
  return 0;
}

运行此命令时,我注意到这只会为您提供输入的第一个字母,因此,如果您需要整个字符串,则可以编写如下代码。

#include <stdio.h>

#define NAMELENGTH 40
int main(void) {
  char newName[NAMELENGTH];
  int newNo;

  printf("\nPlease enter a student number: \n");
  scanf("%d",newName);
  printf("\n%s\n",newName); //To check if it's working
  return 0;
}

上面的代码可以为您提供以下输出:

请输入学生编号:

40

请输入学生姓名:

anhtz

anhtz

本文链接:https://www.f2er.com/3066585.html

大家都在问