Erro de Segmentação

1. Erro de Segmentação

Kim Aragon Escobar
Garfild666

(usa OpenSuSE)

Enviado em 15/06/2008 - 20:41h

Oi, eu estou fazendo um trabalho para a cadeira de algoritmo e programação. Depois q compilei meu codigo e tentei executa-lo deu essi erro q nunca tinha visto!
comecei a faculdade de Eng de Comp. essi semestre e não sou muito experiente em programação
será q alguem poderia me dar uma mãozinha???
desde jah agradeço a paciencia e a ajuda ^^
muito obrigado
(Segue o codigo do meu prog)

#include <string.h>
#include <stdio.h>
#include <stdlib.h>
#include <ncurses.h>

//ponteiro do arquivo
FILE *arq;

//dados a serem passados para o arquivo
struct dados
{
int codigo,estilo;
char albun[15],artist[15];
float preco;
};

void indice(void);
void sair(void);

int main()
{
struct dados buffer;
int opcao;
char continua='s';
//inicia a ncurses
initscr();
//inicia a utilização de cores na ncuses
start_color();


init_pair(1,COLOR_WHITE, COLOR_BLACK);
init_pair(2,COLOR_RED, COLOR_BLACK);
init_pair(3,COLOR_BLACK, COLOR_RED);

bkgd(COLOR_PAIR(1));//cor de fundo
//verificação de erro na abertura do arquivo
if(!(arq=fopen("dados","r+b")))
{
attron(COLOR_PAIR(3));
printf("\nErro fatal!\n");
sair();
}

while(continua=='s'||continua=='S');
{
printw("operacao desejada: ");
indice();
mvscanw(0,19,"%i", &opcao);

system("clear");

switch(opcao)
{
case 1:
attron(COLOR_PAIR(2));//muda a cor do texto
printw("Adicione os dados do novo cd\n");
printw("Codigo: ");
printw("\nArtista: ");
printw("\nAlbum: ");
printw("\nEstilo: ");
printw("\npreço: ");
attroff(COLOR_PAIR(2));
mvscanw(1,7,"%i", &buffer.codigo);
move(2,8);
gets(buffer.artist);
}
}
sair();
}
//cria o indice
void indice(void)
{
attron(COLOR_PAIR(2));
printw("\n Indice Tarefa\n");
printw(" 1 Inclusão\n");
mvprintw(2,0,"->");
mvprintw(2,24,"<-");
mvprintw(2,9,"|");
attroff(COLOR_PAIR(2));

}
//função para sair do programa
void sair(void)
{
fclose(arq);
endwin();
exit(0);
}


  


2. Re: Erro de Segmentação

Fagner Amaral de Souza Candido
f_Candido

(usa Ubuntu)

Enviado em 15/06/2008 - 21:26h

Olá amigo. Quando você tenta abrir o arquivo os parâmetros que você passa são "r+b", isso indica que você vai abrir para leitura e inclusão de arquivos binários, certo? Logo, para abrir e incluir neste modo, o arquivo, que em seu programa você o chama de dados, está criado? Caso não esteja, haverá um erro sim, pois esta opção não cria um arquivo, e sim, somente faz a leitura do mesmo. Experimente por "a+b".

Espero ter ajudado,

Abraços


3. Re: Erro de Segmentação

Kim Aragon Escobar
Garfild666

(usa OpenSuSE)

Enviado em 15/06/2008 - 23:13h

f_Candido muito obrigado!
agora não ocorre mais o erro de segmentação
mas o estranho eh q o programa para...ele não reage...não faz nada...
mas muito obrigado...meu problema primario foi resolvido..







Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts