Quería preguntar sobre un error que tengo en c cuando ejecuto desde la terminal. que dice Violación de segmento (`core' generado)
Si lo ejecuto desde geany me sale un error de: Segmentation fault (core dumped)
¿De que se puede tratar?
El sistema operativo que uso es ubuntu.
El código del programa es:
Cita:
#include <stdio.h>
#include <ncurses.h>
#include <stdlib.h>
struct contacto{
int con_cod;
char con_nya[30];
char con_dir[30];
char con_tel[20];
char con_ema[30];
}con;
FILE *arch;
void altas(void);
int main(void){
/*char op;*/
move(1,40);
start_color();
init_pair(1,COLOR_BLUE,COLOR_RED);
attron(COLOR_PAIR(1));
printw("Programa de contacto");
arch=fopen("contactos.dat", "a+b");
if(arch==NULL){
move(10,20);
printf("Error al crear el archivo");
exit(0);}
altas();
fclose(arch);
}
void altas(void){
erase();
init_pair(1,COLOR_BLUE,COLOR_RED);
attron(COLOR_PAIR(1));
move(12,30);
printw("Codigo:");
move(12,31);
scanw("%d",&con.con_cod);
fflush(stdin);
move(13,30);
printw("Nombre:");
move(13,31);
fgets(con.con_nya,30,stdin);
fflush(stdin);
move(14,30);
printw("Dirección:");
move(14,31);
fgets(con.con_dir,30,stdin);
fflush(stdin);
move(30,15);
printw("Teléfono:");
move(31,15);
fgets(con.con_tel,20,stdin);
fflush(stdin);
move(16,30);
printw("Email:");
move(16,31);
fgets(con.con_ema,30,stdin);
fwrite(&con,sizeof(con),1,arch);
}
#include <ncurses.h>
#include <stdlib.h>
struct contacto{
int con_cod;
char con_nya[30];
char con_dir[30];
char con_tel[20];
char con_ema[30];
}con;
FILE *arch;
void altas(void);
int main(void){
/*char op;*/
move(1,40);
start_color();
init_pair(1,COLOR_BLUE,COLOR_RED);
attron(COLOR_PAIR(1));
printw("Programa de contacto");
arch=fopen("contactos.dat", "a+b");
if(arch==NULL){
move(10,20);
printf("Error al crear el archivo");
exit(0);}
altas();
fclose(arch);
}
void altas(void){
erase();
init_pair(1,COLOR_BLUE,COLOR_RED);
attron(COLOR_PAIR(1));
move(12,30);
printw("Codigo:");
move(12,31);
scanw("%d",&con.con_cod);
fflush(stdin);
move(13,30);
printw("Nombre:");
move(13,31);
fgets(con.con_nya,30,stdin);
fflush(stdin);
move(14,30);
printw("Dirección:");
move(14,31);
fgets(con.con_dir,30,stdin);
fflush(stdin);
move(30,15);
printw("Teléfono:");
move(31,15);
fgets(con.con_tel,20,stdin);
fflush(stdin);
move(16,30);
printw("Email:");
move(16,31);
fgets(con.con_ema,30,stdin);
fwrite(&con,sizeof(con),1,arch);
}