leogalpao Posted July 8, 2011 Report Share Posted July 8, 2011 (edited) 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! Edited July 8, 2011 by kuroi Adicionar tag CODE Quote Link to comment Share on other sites More sharing options...
Question
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!
Edited by kuroiAdicionar tag CODE
Link to comment
Share on other sites
0 answers to this question
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.