Ir ao conteúdo
  • Cadastre-se
Entre para seguir isso  
Marcia22

Imprimindo na tela conteúdo de arquivos

Recommended Posts

Boa tarde.

Preciso mostrar na tela todo o conteúdo do meu arquivo, porém da maneira que eu fiz, estou somente mostrando o último registro. Como posso mostrar todos eles? O código está abaixo, é apenas a primeira função "listagem" mas anexei todo ele.

Mt obrigada.

#include<stdio.h>
#include<conio.h>
#include<string.h>

struct cadastro /* cria a estrutura cadastro e define suas variaveis */
{
char excluido;
char nome[30];
/* char cargo[20];
char sexo;
char cidade [30];
char estado [2];
int codigo;
int telefone;
int cpf;
int idade;
int salario; */
};

struct cadastro cad; /* cria a variavel global cad do tipo estrutura
com todos os campos definidos em cadastro */

FILE *arqvDados = 0; //variavel ponteiro de arquivo

void listagem( struct cadastro cad )
{
fseek( arqvDados, 0, SEEK_SET );
while(fread( &cad, sizeof( struct cadastro ), 1, arqvDados ));
{
printf("%s", cad.nome);
}
getch();
}

void inclusao( struct cadastro cad )
{
printf("Digite o nome completo: ");
scanf(" %29[^\n\t]", cad.nome);
/*Posicionar no final: */
fseek( arqvDados, 0, SEEK_END ); /*(nome do ponteiro do arquivo, numero de bytes q vai caminhar, vai para o final)*/
/*gravar um registro:*/
fwrite( &cad, sizeof( struct cadastro ), 1, arqvDados ); /* &cad grava no endereco de cad */
printf("Nome cadastrado com sucesso, pressione ENTER para continuar.");
getch();
}

void exclusao( struct cadastro cad )
{
int n;
printf("Qual registro deseja excluir?\n");
scanf("%d", &n);
fseek( arqvDados, ( n - 1 ) * sizeof( struct cadastro ), SEEK_SET );
fread( &cad, sizeof( struct cadastro ), 1, arqvDados );
cad.excluido='E';
fseek( arqvDados, ( n - 1 ) * sizeof( struct cadastro ), SEEK_SET );
fwrite( &cad, sizeof( struct cadastro ), 1, arqvDados );
getch();
}

void alteracao( struct cadastro cad )
{ int n;
printf("Qual registro deseja alterar?\n");
scanf("%d", &n);
fseek( arqvDados, ( n - 1 ) * sizeof( struct cadastro ), SEEK_SET );
fread( &cad, sizeof( struct cadastro ), 1, arqvDados );
printf("Digite o nome completo: ");
scanf(" %29[^\n\t]", cad.nome);
fseek( arqvDados, ( n - 1 ) * sizeof( struct cadastro ), SEEK_SET );
fwrite( &cad, sizeof( struct cadastro ), 1, arqvDados );

getch();
}

void menu(int opcao, struct cadastro cad)
{

switch(opcao)
{
case 1: inclusao(cad);
break;
case 2: exclusao(cad);
break;
case 3: alteracao(cad);
break;
case 4: listagem(cad);
break;

}
}

main()
{

int opcao;
struct cadastro* p;
arqvDados = fopen( "c:\\temp1\\dados.dat","rb+" );
/* "rb+" Abre um arquivo binário para leitura e gravação. O arquivo deve existir e pode ser atualizado.*/

if( arqvDados == 0 )
{
arqvDados = fopen( "c:\\temp1\\dados.dat","wb+" );
/* "wb+" Abrir um arquivo binário para leitura e gravação. Se o arquivo existir ele será
destruído e reinicializado. Se não existir será criado. */
}

if ( arqvDados == 0 )
{
printf("Ocorreu um erro o arquivo nao pode ser aberto\n Tecle ENTER para sair");
getch();
exit(1);
}



p = &cad;
do
{
clrscr();
printf("CADASTRO\n");
printf("============================\n\n");
printf("\t\t 1 INCLUSAO\n\t\t 2 EXCLUSAO\n\t\t 3 ALTERAR\n\t\t 4 LISTAGEM\n\t\t 5 SAIR\n\n");

printf("Qual a sua opcao? ");
scanf("%d", &opcao);
menu(opcao,cad);
}
while (opcao != 5);

return 0;
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

void listagem( struct cadastro cad )
{
fseek( arqvDados, 0, SEEK_SET );
while(fread( &cad, sizeof( struct cadastro ), 1, arqvDados ))
{
printf("%s", cad.nome);
}
getch();
}

retirei so o ; depois do while

Compartilhar este post


Link para o post
Compartilhar em outros sites

Nossa muito obrigada!! Quase me matei, porque o código deveria funcionar! Esta tudo certo só sobrou um ; hihihihihi

Muito obrigada, SuperNov4!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora
Entre para seguir isso  





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×