gpt4 book ai didi

c - scanf 到结构数组时出现段错误(已更正)

转载 作者:行者123 更新时间:2023-11-30 15:31:57 25 4
gpt4 key购买 nike

这个学生管理的经典例子让我抓狂我必须完成对结构数组的 scanf第一次 scanf 之后我得到段错误。我几乎确定我需要分配一些东西但从昨天起我就一直在努力解决这个问题,我真的需要帮助%d scanf 中的问题是我编辑程序以将其发布到此处的错误。现在我成功地将其发布完整..

    #include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <stdio.h>

const int cantidadalumnos = 50;
const int cantidadmaterias = 300;
struct AlumnoData
{
int padron;
int dni;
char apellido[20];
char nombres[20];
int edad;
char dir[30];
char localidad [20];
char provincia [20];
int ingreso;
int codcar;
};
struct MateriaData
{
int codmat;
char Materia[20];
int anio;
int cuat;
int numcurso [20];
int nota;
int libro;
int folio;
};
int main()
{
int indicealumno;
indicealumno = 0;
int indicemateria;
struct AlumnoData alumno[cantidadalumnos];
struct MateriaData materia [cantidadmaterias];
char opcion;
int intop;
do
{
printf ("\n\n\n\n\n\n\##### Gestion de alumnos #####\n/ / / / / / / / / / / / / / /");
printf ("\n 1. Ingresar alumno");
printf ("\n 2. Buscar un alumno por padron");
opcion = getch();
intop = opcion;
switch (intop)
{
case '1' :
printf ("-------------INGRESO DE ALUMNO\n---------------------------\n");

for (indicealumno = 0 ; indicealumno<cantidadalumnos; indicealumno++)
{
printf("La cantidad de alumnos hasta el momento es de %d de %d", indicealumno, cantidadalumnos);
printf("\nPadron:");
scanf("%d", alumno[indicealumno].padron);
break;
};
break;
}
}
while (opcion !=27);
}

最佳答案

%d 格式字符串用于读取 int,但您正在尝试读取字符串。尝试将格式字符串更改为正确的 %s。请注意,我还添加了一个宽度说明符,以避免输入缓冲区溢出。

scanf("%19s", alumno[stdindex].name);

编辑更新的问题:

scanf() 函数需要接收值的变量的地址。这允许函数修改变量的内容。您读取 padron 值的行应该是:

scanf("%d", &alumno[indicealumno].padron);

请注意在第二个参数之前添加的 &(地址)运算符。

关于c - scanf 到结构数组时出现段错误(已更正),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24480395/

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