Por lo visto tiene que ver con calificación, o no tengo ni idea, ¿Qué puede estar sucediendo?.
Sin contenido en las estructuras (usar la opción mostrar sin antes meter algo), funciona, de igual forma buscar, pero el problema es cuando relleno; Ya no me deja usarlas, crashea.
Código
Gracias de antemano.
#include <stdio.h> #include <stdlib.h> #include <math.h> #include <string.h> typedef struct materia{ char nombre[100]; float cal; }materia; typedef struct alumno{ char apellidoP[15]; char apellidoM[15]; char nombre[30]; materia mat[50]; int nua; char carrera[30]; struct alumno *s; }alumno; void buscar(alumno *p1){ int op, i=1, nua, nm=0; float prom=0; while(p1!=NULL) { if(nua==p1->nua) { printf("%d. %s %s %s %d, %f, %s\t\n", i++, p1->nombre, p1->apellidoP, p1->apellidoM, p1->nua, p1->mat[nm].cal, p1->carrera); } p1=p1->s; } if(i==1) { } } int tamanio(alumno *lt){ if(lt==NULL) return 0; else return tamanio(lt->s)+1; } alumno *ingresar(alumno *p1){ int op, P, nm=0, Q=0; float Cal, prom, Con=0; { int ch; ; } alumno *A, *aux; { int ch; ; } A->s=NULL; if(p1==NULL) p1=A; else { aux=p1; while(aux->s!=NULL) aux=aux->s; aux->s=A; } switch(op) { case 1: while(op!=2) { if(op==1) { nm++; } } for( op=0;op<=nm;op++){ } break; case 2 : break; return p1; } } void mostrar(alumno *p1){ int i=1; while(p1!=NULL) { printf("%d. %s %s %s %d, %s\t\n", i++, p1->nombre, p1->apellidoP, p1->apellidoM, p1->nua, p1->carrera); p1=p1->s; } } int main(){ alumno *p1=NULL; int op; do{ switch(op) { case 1: p1=ingresar(p1); break; case 2: mostrar(p1); break; case 3: buscar(p1); break; default: } }while(op!=8); return 0; }