我很高興加入您的論壇。 現在,讓我們來看下面的情況;我有'分段錯誤'錯誤的問題。我從一個二進制文件讀取數據,我試圖存儲在一個結構中;繼承了我在做什麼或「試圖」做什麼的代碼。哈哈哈幫助結構(分段故障)
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);
}
感謝先進。祝你有個美好的一天
請重新格式化您的消息,以便代碼具有正確的縮進。現在它是不可讀的。 – thkala 2010-12-05 22:16:17
也請嘗試將你的例子減少到能夠重現錯誤的最小代碼(這在任何情況下都是很好的調試技術)。並指定segfault正在發生的位置(通過在調試器中運行找到它)。 – 2010-12-05 22:19:06