gpt4 book ai didi

c - 帮助结构(段错误)

转载 作者:行者123 更新时间:2023-11-30 18:43:38 25 4
gpt4 key购买 nike

我很高兴加入你们的论坛。现在,让我们看看缺点;我遇到了“段错误”错误。我从二进制文件读取数据,我试图将其存储在结构中;这是我正在做或“尝试”做的事情的代码。哈哈哈

struct Medico //users are medics
{
int Id_Doctor; //Id User
int Estado; //status of the user
char Nombre[60]; //name of the user
char Clave_Acceso[20]; //password of the user
char Especialidad[40]; //especialty of the user
struct Medico *next;
};

void Cargar_Datos () //load files
{
FILE *Archivaldo; ///file- Archivo means file
struct Medico * head = NULL;
struct Medico * prev, *current;
char especialida[40], password[20]; ///locals for specialty and password
char nombre_doc[60]; ///local for name
int estado_doc, id_doc; // local for status

if((Archivaldo=fopen("md.dat", "a+b"))==NULL)
{
printf("No se pudo abrir el archivo de Medicos\n");
exit(1);
}
rewind(Archivaldo);
current = (struct Medico *) malloc (sizeof(struct Medico));

fread(&id_doc, sizeof(int), 1, Archivaldo);
fread(nombre_doc, sizeof(char), sizeof(nombre_doc), Archivaldo);
fread(password, sizeof(char), 20 , Archivaldo);
fread(especialida, sizeof(char), 40, Archivaldo);
fread(&estado_doc, sizeof(int), 1, Archivaldo);

printf("ID: %d\n", id_doc);
printf("\nDoctor: ");
puts(nombre_doc);
printf("\nPassword: ");
puts(password);
printf("\nEspecialidad: ");
puts(especialida);
printf("\nEstado: ");
if(estado_doc==1)
puts("Activo\n");
else
puts("Inactivo\n");
current->Id_Doctor=id_doc;
strcpy(current->Nombre, nombre_doc);
strcpy(current->Clave_Acceso, password);
strcpy(current->Especialidad, especialida);
current->Estado=estado_doc;
current=current->next;

fclose(Archivaldo);

}

提前致谢。祝你有美好的一天

最佳答案

您正在使用 fread 读取 nombre_docespecialida 和所有其他字符串。这很好,但它不会以 '\0' 字符终止字符串。您使用 putsstrcpy 期望这些字符串以 nul 终止符结尾。

首先,将字符串的大小增加 1。然后终止字符串:

nombre_doc[60] = '\0';

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

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