do { printf("1 :Enter Company Deatils\n"); printf("2 :Display stoke Deatils\n"); printf("0 :Exit\n"); printf("\nEnter num: "); scanf("%d", &n); switch (n) { case 1: enter(); break; case 2: display(); break; } } while (n != 0); Cuando ingreso 2 para llamar a la función de visualización después de que scanf() no tome ninguna entrada y ejecute el ciclo por tiempo infinito.
void display_d(){ point c1; FILE *fptr; fptr = fopen("company_det.txt","r"); while(fread(&c1,sizeof(point),1,fptr)){ printf("\n%s %s %d\n",c1.company_name,c1.bla.date,c1.bla.price); } fclose(stdin); }esta es mi función de visualización
La función display_d() cierra stdin . Cuando la función regrese, scanf intentará usar stdin para leer otro dígito. Este es un comportamiento indefinido ( ver respuestas aquí ).
Probablemente quiso cerrar el archivo en lugar de stdin .
Además, se debe verificar el valor de retorno de fopen . Será NULL si fopen no pudo abrir el archivo.