Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/63.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在C语言中向数组添加元素_C_Arrays_Loops_Scanf_Element - Fatal编程技术网

在C语言中向数组添加元素

在C语言中向数组添加元素,c,arrays,loops,scanf,element,C,Arrays,Loops,Scanf,Element,我有一个作业,要创建一个包含学生姓名和成绩的成绩册,我被困在了要求我添加新学生的地方。STUDNO是该计划只允许75名学生姓名长度为40的地方 因此,我编写了一个for循环来搜索整个数组,我没有错误或警告,但是程序跳过了scanf函数,在那里它要求输入名称 代码如下: #define STUDNO 75 #define NAMELENGTH 40 void super(int studNo, char name [STUDNO][NAMELENGTH], int studMa

我有一个作业,要创建一个包含学生姓名和成绩的成绩册,我被困在了要求我添加新学生的地方。STUDNO是该计划只允许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%确定在扫描功能中会发生什么,这将导致这一问题,但要解决它,所有你要做的是包括你打印到控制台的最后一件事。您的代码将如下所示

#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", &newNo);
  printf("Please enter the student name:\n");
  scanf("\n%[^\n]", newName);
  printf("\n%s\n",newName); //To check if it's working
  return 0;
}
#包括
内部主(空){
charnewname;
内特纽诺;
printf(“\n请输入学生编号:\n”);
scanf(“%d”和&newNo);
printf(“请输入学生姓名:\n”);
scanf(“\n%[^\n]”,&newName);
printf(“\n%c\n”,newName);//检查它是否工作
返回0;
}
当我运行这个程序时,我注意到这只会得到输入的第一个字母,所以如果需要整个字符串,可以这样编写代码

#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", &newNo);
  printf("Please enter the student name:\n");
  scanf("\n%[^\n]", newName);
  printf("\n%s\n",newName); //To check if it's working
  return 0;
}
#包括
#定义名称长度40
内部主(空){
char newName[NAMELENGTH];
内特纽诺;
printf(“\n请输入学生编号:\n”);
scanf(“%d”和&newNo);
printf(“请输入学生姓名:\n”);
scanf(“\n%[^\n]”,新名称);
printf(“\n%s\n”,newName);//检查它是否工作
返回0;
}
上面的代码可以为您提供以下输出:

请输入学生编号:

四十

请输入学生姓名:

安茨


anhtz

您是否已经学习了
struct
C关键字?如果是,那么你的方法是错误的。如果没有,那么你一定要先学习
struct
。还要学习初学者C教材中有关字符串的章节,特别是
strcpy
函数。您不能使用
=
分配字符串。感谢您的回复,Jabberwocky。我还没有到使用struct的程度,只是需要使用我目前拥有的一些非常基本的工具。实际上,我已经设法将一个新元素(名称)添加到数组中。我仍然有问题,让它显示,但我正试图解决它通过传递数据从一个函数到另一个。嗨LoganMacMonkey,谢谢你的回应。我已经建立了一个与你的例子非常相似的程序,它确实工作得很好。我可以看到我在一个函数中输入的名称在另一个函数中完整显示。我只是在向数组中添加新名称时遇到问题。我注意到您从未在for循环中使用过I。您应该在for循环中用i替换STUDNO。它似乎可以工作,但它将名称存储在内存中的某个随机位置,数组中的插槽已分配给它,但它只是显示随机符号而不是名称。