leogalpao Postado Julho 8, 2011 Denunciar Share Postado Julho 8, 2011 (editado) boa tarde!preciso de uma ajuda urgente!estou desenvolvendo um programa em C# para trabalho de fim de semestre (2º semestre) e o programa está dando um erro que eu não consegui identificar...o compilador não aponta nenhum erro ou bug, mas na hora de executá-lo ele simplesmente dá um aviso que o programa parou de funcionar...segue o programa e a biblioteca:#include<stdio.h> #include<conio.h> #include<string.h> #include "socio.h" main() { lista_s listas = NULL; listas = criaListaSocio(); Socio socio; int contador = restauraListasocio(listas); printf("%d", contador); //preencheSocio(listas, &contador, socio); /*socio.matricula= ++contador; strcpy(socio.Nome_s, "João da Silva"); strcpy(socio.endereco, "Endereço 1"); socio.status=1; insereNohsocio(listas, socio); gravaNohsocio(socio); imprimeListasocio(listas);*/ getch(); } e a biblioteca: #include<stdio.h> typedef enum {s, n} status; typedef enum {insere, restaura} Operacao; typedef char nome[40]; typedef char titulo[50]; typedef struct noh_socio noh_socio; typedef noh_socio *lista_s; typedef noh_socio *posicao_s; typedef struct { int matricula; nome Nome_s; nome endereco; int status; }Socio; struct noh_socio{ int posicao; nome Nome_s; noh_socio *prox; }; lista_s criaListaSocio() { lista_s L = (lista_s) malloc (sizeof(noh_socio)); strcpy(L->Nome_s, ""); L->posicao=0; L->prox=NULL; return L; } /*void preencheSocio(lista_s lista, int *contador,Socio socio){ socio.matricula= contador++; fflush(stdin); gets(socio.Nome_s); fflush(stdin); gets(socio.endereco); socio.status=1; gravaNohsocio(socio); }*/ int existeNohsocio(lista_s lista, Socio socio) { posicao_s p; for (p=lista; p->prox != NULL; p = p->prox) { if (strcmp(p->prox->Nome_s, socio.Nome_s) == 0) { return 1; } } return 0; } void restauraNohsocio(lista_s lista, Socio socio, Operacao operacao, int deslocamento) { posicao_s p, q; if (!existeNohsocio(lista, socio)) { for (p=lista; p->prox != NULL && strcmp(p->prox->Nome_s, socio.Nome_s) < 0; p = p->prox); q = p->prox; p->prox = (noh_socio *) malloc(sizeof(noh_socio)); strcpy(p->prox->Nome_s,socio.Nome_s); if (operacao == insere) p->prox->posicao = gravaNohsocio(socio); else p->prox->posicao = deslocamento; p->prox->prox = q; } else { printf("\n O Socio %s j%s existe na base de dados!!!", socio.Nome_s,160); } } void insereNohsocio(lista_s lista, Socio socio) { restauraNohsocio(lista, socio, insere, 0); } int gravaNohsocio(Socio socio) { FILE *arq = fopen("socios.dat","ab"); int tamanho=0; if (arq != NULL) { fseek(arq, 0, 2); tamanho = ftell(arq); fwrite(&socio, sizeof(Socio), 1, arq); fclose(arq); } return tamanho; } int restauraListasocio(lista_s l) { FILE *arq = fopen("socios.dat","rb"); Socio socio; int tamanho=0; int contador=1; if (arq != NULL) { do { fread(&socio, sizeof(Socio), 1, arq); if (ferror(arq)) { printf("\nOcorreu um erro na leitura."); break; } if (!feof(arq)) restauraNohsocio(l, socio, restaura, tamanho); tamanho += sizeof(Socio); contador++; } while (!feof(arq)); fclose(arq); } else { printf("\nErro na abertura do arquivo."); } return contador; } Socio obtemRegistrosocio(int deslocamento) { FILE *arq = fopen("socios.dat","rb"); Socio socio; if (arq != NULL) { fseek(arq, deslocamento, 1); fread(&socio, sizeof(Socio), 1, arq); fclose(arq); } return socio; } void atualizaRegistrosocio(lista_s lista, Socio socio) { Socio socioTmp; posicao_s p; for (p=lista; p->prox != NULL; p = p->prox) { if (strcmp(p->prox->Nome_s, socio.Nome_s) == 0) { socioTmp = obtemRegistrosocio(p->prox->posicao); strcpy(socioTmp.endereco, socio.endereco); FILE *arq = fopen("socios.dat","rb+"); if (arq != NULL) { fseek(arq, p->prox->posicao, 1); fwrite(&socioTmp, sizeof(Socio), 1, arq); fclose(arq); } break; } } } void imprimeListasocio(lista_s lista) { posicao_s p; printf("\n"); int ctr=1; p=lista; Socio socio; printf("\n\nEndereco de L: %d - endereco do no-lider: %d ", &lista, lista); printf("\nno-lider (endereco: %d - proximo: %d", &p->Nome_s, p->prox); for (; p->prox != NULL; p = p->prox) { socio = obtemRegistrosocio(p->prox->posicao); printf("\n%d Nome(endereco do noh: %d - matricula: %d - nome: %s - endereco: %s - proximo: %d", ctr++,&p->prox->Nome_s, socio.matricula, socio.Nome_s, socio.endereco, p->prox->prox); } printf("\n\n"); }se alguém puder ajudar, estou on line meu email é leogalpao@hotmail.comaguardo! Editado Julho 8, 2011 por kuroi Adicionar tag CODE Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
leogalpao
boa tarde!
preciso de uma ajuda urgente!
estou desenvolvendo um programa em C# para trabalho de fim de semestre (2º semestre)
e o programa está dando um erro que eu não consegui identificar...
o compilador não aponta nenhum erro ou bug, mas na hora de executá-lo ele simplesmente dá um aviso que o programa parou de funcionar...
segue o programa e a biblioteca:
e a biblioteca:se alguém puder ajudar, estou on line meu email é leogalpao@hotmail.com
aguardo!
Editado por kuroiAdicionar tag CODE
Link para o comentário
Compartilhar em outros sites
0 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.