-
Posts
57 -
Cadastrado em
-
Última visita
Tipo de conteúdo
Artigos
Selos
Fabricantes
Livros
Cursos
Análises
Fórum
posts postados por percautus
-
-
Imprimir folha em branco pode ser o cartucho ou algum problema de driver ou configuração. Para tirar a dúvida sobre o cartucho, experimente fazer uma cópia sem imprimir (com a impressora desligada do micro).
A folha está bem posicionada para ser puxada pela multifuncional? O papel está bem seco?
-
Antes de inserir o registro, teste se o codigo já existe.
Vai ter que fazer uma função que varre o arquivo inteiro, e retorna a existência daquele código.
Existindo, você pode dar a opção para alterar o registro ou informar outro código para inclusão.
É um procedimento normal em aplicações de cadastro...
-
Vamos lá:
1) Primeiro seu arquivo deve estar aberto para leitura e gravação
FILE * meuarq;
meuarq = fopen("jogos.dat", "r+b");
2) Chamar a função informando o código do registro a ser alterado:
alterar(meuarq, 10); // por exemplo, alterar o registro de codigo 10
3) Modifiquei (em vermelho) o seu código para:
void alterar(FILE *pont, int codigo)
{
struct jogo cad;
int sucesso=0;
[COLOR="Red"]
int posicao = 0; // inicio do arquivo
// usar fseek para ir ao inicio do arquivo pois
// voce pode estar adiante do registro que quer alterar
fseek(pont, posicao, SEEK_SET);
[/COLOR]
do {
if (fread(&cad,sizeof(struct jogo),1,pont) == 0)
break;
if (cad.codigo == codigo)
{
system("cls");
printf("<<<<<Registro Antigo>>>>>\n\n");
printf("Codigo............: %d\n",cad.codigo);
printf("Jogo..............: %s\n",cad.nome_jogo);
printf("Plataforma........: %s\n",cad.plataforma);
printf("Desenvolvedor'a'..: %s\n",cad.desenvolvedor_a);
printf("Ano...............: %d\n\n",cad.ano);
printf("<<<<<Digite o Registro novo>>>>\n\n");
printf("Código..........: ");
scanf("%d", &cad.codigo);
fflush(stdin);
printf("Nome do Jogo....: ");
gets(cad.nome_jogo);
printf("Plataforma......: ");
gets(cad.plataforma);
printf("Desenvolvedor'a': ");
gets(cad.desenvolvedor_a);
fflush(stdin);
printf("Ano.............: ");
scanf("%d", &cad.ano);
fflush(stdin);
cad.deletado=0;
[COLOR="red"]
// quando você le o arquivo o ponteiro se desloca.
// é necessario voltar para a posicao anterior a
// da leitura que é onde o registro começa
fseek(pont, posicao, SEEK_SET);
// agora sim, podemos gravar
// e é melhor o sucesso estar condicionado a
// correta gravacao do registro (abaixo)
[/COLOR]
sucesso= fwrite(&cad,sizeof(struct jogo),1,pont) == sizeof(struct jogo);
break;
}
[COLOR="Red"]
// ajustar posicao em relação ao inicio do arquivo
posicao = posicao + sizeof(struct jogo);
[/COLOR]
} while(1);
if (!sucesso)
printf("Jogo não encontrado no arquivo\n");
system("pause");
}Uma observação:
1) Não acho legal permitir trocar de código.
Acho que é isto. Vamos ver se funciona...
Sobre o Clube do Hardware
No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades 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
Tem como ligar um HD de pc no notebook??
em HD, SSD e NAS
Postado
voce pode comprar um daqueles gabinetes que permitem que um HD IDE seja lido através da USB.
Por exemplo:http://www.maxxtro.com.br/storages/speed3500s/index.htm