Generalmente se da cuando cargo un string y luego quiero imprimirlo, no lo imprime, o imprime uno solo y no los otros tres. Realice un codigo simple para que vean de que se trata:
Código:
typedef struct {
char detalle[300];
char sentencia[20];
}funciones;
int main()
{
funciones f;
FILE* fichero;
fichero = fopen("stdio_h.txt", "w");
printf("escribi\n");
scanf("%[^\n]", &f.detalle);
scanf("% [^\n]", &f.sentencia);
fwrite(&f, sizeof(funciones), 1, fichero);
fclose(fichero);
system("clear");
fichero = fopen("stdio_h.txt", "r");
fread(&f, sizeof(funciones), 1, fichero);
printf("%s", f.detalle);
printf("%s", f.sentencia);
fclose(fichero);
return 0;
}
Por ejemplo este codigo solo imprime lo que guarde en f.detalle, y lo de f.sentencia no lo imprime y finaliza el programa en consola.
Yo supongo que es un problema con el buffer, pero al estar en Ubuntu no puedo hacer uso de fflush(stdin);
Puede que limpie el buffer manualmente con este codigo:
Código:
void limpiar_buffer(){
int c;
do {
c = getchar;
}while (c != '\n' && c != EOF);
return;}*/
/*void cargar_funcion();
char selec_libreria();
void ver_funciones();
Pero igual el programa falla, es mas parece que nunca sale de esa funcion/bucle, aunque el codigo lo saque de google.
Espero que puedan ayudarme, ya que necesito hacer un programa en C con archivos y demas.
Tambien acepto sugerencias de otros IDES.