valramos 0 Denunciar post Postado Junho 5, 2010 Ola, estou tentando fazer com que o codigo abaixo liste pra mim todo o conteudo do arquivo. E nao to conseguindo. Alguem poderia dar uma ajuda? Obrigado! Codigo: struct Loja* lerLoja() { int cod, cont; struct Loja *p = malloc(sizeof(struct Loja)); FILE *f = fopen("CADASTROS.txt", "r"); char text[sizeof(struct Loja)+4]; memset(text, 0, sizeof(struct Loja)+4); fgets(text, sizeof(struct Loja)+4, f); system("cls"); printf("Codigo Nome Local Dono\n"); printf("%s", text); char* codigo = strtok(text, "/"); char* nome = strtok(text, "/"); char* local = strtok(text, "/"); char* dono = strtok(text, "/"); strcpy(p->codigo, codigo); strcpy(p->nome, nome); strcpy(p->local, local); strcpy(p->dono, dono); fclose(f); return p; } Compartilhar este post Link para o post Compartilhar em outros sites
guidjos 65 Denunciar post Postado Junho 6, 2010 Eu proponho algumas alterações, antes de tentar corrigir qualquer erro: Armazene o conteúdo diretamente usando fwrite(), e leia direto na struct usando fread(). Não use a função de leitura para escrever. Leia tudo que tiver que ler, e crie uma função de escrita que percorre o seu vetor de structs lidas (ou qualquer que seja a estrutura de dados que você deseje usar para armazenar as informações), imprimindo campo a campo... Isso modulariza e simplifica a solução. Fica mais fácil localizar e corrigir erros, bem como fazer quaisquer alterações que você queira depois. Outra coisa: evite ao máximo usar strcpy(). Use, ao invés disso, strncpy(), que é segura. E o que você fez na declaração dos vetores de char não é padrão no C. Ao invés disso, declare char* e faça malloc() baseado no strlen() dos dados em que deseja fazer strncpy(). Compartilhar este post Link para o post Compartilhar em outros sites