Ver Mensaje Individual
  #1 (permalink)  
Antiguo 28/05/2012, 03:05
Javieer-G
 
Fecha de Ingreso: diciembre-2008
Mensajes: 50
Antigüedad: 16 años
Puntos: 0
Problema con fwrite

Para no abrir dos posts, os pregunto dos cosas:

La primera, tengo un fwrite que no me funciona:

Código C:
Ver original
  1. main()
  2. {
  3. FILE *pf;
  4.  
  5. struct ficha{
  6. int clave;
  7. char nombre[50];
  8. float nota;};
  9.  
  10. int i=0, j=0, n=0;
  11.  
  12. struct ficha registro; //Crea una estructura del tipo ficha llamada registro
  13.  
  14. if (pf = (fopen("registro.txt", "w+") == NULL)){puts("Error al abrir el ficherro");} //Abre el fichero <<registro.txt>>, donde grabaremos los datos
  15.  
  16. puts("¿Que desea hacer?");
  17. puts("A -> Añadir");
  18. puts("L -> Listar");
  19. puts("X -> Salir");
  20. /*******************************AÑADIR DATOS*******************************/
  21. if(getchar() == 'A')
  22. {
  23. puts("Cuantos registros quieres introducir?: ");
  24. scanf("%d", &n);
  25.  
  26. for(j=0; j<n; j++){
  27. puts("Introduzca los datos del alumno");
  28. puts("Clave: ");
  29. scanf("%d", &registro.clave);
  30.  
  31. puts("Nota: ");
  32. scanf("%f", &registro.nota);
  33.  
  34. puts("Nombre: ");
  35. fgets(registro.nombre, 50, stdin);
  36. //gets(registro.nombre);
  37.  
  38. if(fwrite(&registro, sizeof(registro), 1, pf) != 1) perror("escribiendo el fichero");
  39.  
  40. }}
  41. return 0;
  42. }

Ahora mismo me da violación de segmento, pero en otros momentos, cuando no me daba violación de segmento, me escribía en el fichero 0s y 1s.

El caso es que me suena que violación de segmento es cuando un puntero apunta a donde no debe, pero en este caso no tengo ni idea. Y lo de los 0s y 1s ya no lo sé.

La otra pregunta es, los que programais en linux, ¿cómo depurais?