Para no abrir dos posts, os pregunto dos cosas:
La primera, tengo un fwrite que no me funciona:
Código C:
Ver originalmain()
{
FILE *pf;
struct ficha{
int clave;
char nombre[50];
float nota;};
int i=0, j=0, n=0;
struct ficha registro; //Crea una estructura del tipo ficha llamada registro
if (pf
= (fopen("registro.txt", "w+") == NULL
)){puts("Error al abrir el ficherro");} //Abre el fichero <<registro.txt>>, donde grabaremos los datos
puts("¿Que desea hacer?"); /*******************************AÑADIR DATOS*******************************/
{
puts("Cuantos registros quieres introducir?: ");
for(j=0; j<n; j++){
puts("Introduzca los datos del alumno"); scanf("%d", ®istro.
clave);
scanf("%f", ®istro.
nota);
fgets(registro.
nombre, 50, stdin
); //gets(registro.nombre);
if(fwrite(®istro
, sizeof(registro
), 1, pf
) != 1) perror("escribiendo el fichero");
}}
return 0;
}
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?