gpt4 book ai didi

c - 结构指针段错误

转载 作者:太空宇宙 更新时间:2023-11-04 06:14:39 25 4
gpt4 key购买 nike

#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 在我放入时工作,它只是给出一个段错误

谁能帮帮我?

最佳答案

St[50] = &Stu[50];

并不是将St中的所有指针都设置为指向Stu中对应元素的方式。你需要一个循环:

for (int i = 0; i < 50; i++) {
St[i] = &Stu[i];
}

顺便说一句,(*St[entrynumber]).name)通常写成St[entrynumber]->name

真的根本不需要指针数组。您可以在 scanf() 调用中只使用 Stu[entrynumber].name&Stu[entrynumber].St_No

并且不要忘记 scanf() 中的 %s 只是读取一个单词。如果您尝试输入名字和姓氏,它将不起作用。您可能应该使用 fgets() 阅读整行(并且不要忘记在末尾删除换行符)。

关于c - 结构指针段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48572813/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com