#include <stdio.h>
#include <string.h>
struct student
{
char name[50];
int St_No;
float mark[10];
};
int main()
{
int entrynumber=0;
int r=0;
while(r != 1)
{
printf("choose one of the following options\n");
printf("1-Introduce new student\n");
printf("2-Introduce new mark\n");
printf("3-Print report of all students\n");
printf("4-Exit\n");
char givenname[50];
int option;
scanf("%d",&option);
int n,i,e=0,j=0;
struct student *St[50], Stu[50];
St[50] = &Stu[50];
switch(option)
{
case 1:
entrynumber;
printf("Enter name of student\n");
scanf("%s",(*St[entrynumber]).name);
printf("\nEnter student Number\n");
scanf("%d",&(*St[entrynumber]).St_No);
entrynumber++;
int noofstudents = entrynumber;
break;
|
我把剩下的休息了
好的,所以我在这一行得到了段错误
scanf("%s",(*St[entrynumber]).name);
当我把它放进去时scanf
工作,它只是给出一个seg错误
任何人都可以帮我吗?
答案 0 :(得分:4)
St[50] = &Stu[50];
不是将St
中的所有指针设置为指向Stu
的相应元素的方法。你需要一个循环:
for (int i = 0; i < 50; i++) {
St[i] = &Stu[i];
}
BTW,(*St[entrynumber]).name)
通常写为St[entrynumber]->name
。
根本不需要指针数组。您可以在Stu[entrynumber].name
来电中使用&Stu[entrynumber].St_No
和scanf()
。
不要忘记%s
中scanf()
只读一个单词。如果您尝试输入名字和姓氏,它将无法使用。您可能应该使用fgets()
读取整行(并且不要忘记在最后删除换行符。)