在C语言中向数组添加元素
我有一个作业,要创建一个包含学生姓名和成绩的成绩册,我被困在了要求我添加新学生的地方。STUDNO是该计划只允许75名学生姓名长度为40的地方 因此,我编写了一个for循环来搜索整个数组,我没有错误或警告,但是程序跳过了scanf函数,在那里它要求输入名称 代码如下:在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
#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。它似乎可以工作,但它将名称存储在内存中的某个随机位置,数组中的插槽已分配给它,但它只是显示随机符号而不是名称。