pessoal alguém pode me dar uma ideia sobre a questão abaixo.
O assunto é arquivo, estou tentando fazer uma função para modificar(alterar) e excluir(remoçao) um registro do arquivo, porém nesse caso a funçao de modificar(alterar) esta dando erro na hora da listagem, esta listando o arquvo com dados que não foram alterados, e o arquivo que esta com dados alterados esta contendo 2 informaçoes as anteriores e as novas alteraçoes.
printf("\t Bem Vindo. \n\n\t===Lista de Setores===\t");
printf("\n\t\tMENU\n");
printf("\n 1 - Cadastrar Setor e Telefone:");
printf("\n 2 - Listar todos os Setores e Telefones:");
printf("\n 3 - Alterar Setor e Telefone:");
printf("\n 4 - Remover Setor e Telefone:");
printf("\n 5 - Sair.");
printf("\n");
printf("\nDigite um Numero: ");
scanf("%d", &op);
switch(op){
case 1:
system("cls");
printf("\nDigite o Codigo do Setor: ");
scanf("%d", &cods);
printf("\nDigite o Setor: ");
setbuf(stdin,NULL);
gets(Setor);
printf("\nDigite o telefone: ");
scanf("%d", &telefone);
Cadastra(cods, Setor, telefone);
system("pause");
break;
case 2:
system("cls");
Listar();
system("pause");
break;
case 3:
system("cls");
printf("\nDigite o Codigo do Setor a ser alterado: ");
scanf("%d", &cods);
printf("\nDigite o novo Setor: ");
setbuf(stdin,NULL);
gets(Setor);
printf("\nDigite o novo telefone: ");
scanf("%d", &telefone);
Alteracao(cods, Setor, telefone);
system("pause");
break;
case 4:
break;
case 5:
printf("\n\nFinalizando...\n\n");
system("pause");
exit(0);
break;
default:
printf("\n\nEscolha invalida! Tente Novamente!\n\n");
system("pause");
Pergunta
Taynielly Rozario
pessoal alguém pode me dar uma ideia sobre a questão abaixo.
O assunto é arquivo, estou tentando fazer uma função para modificar(alterar) e excluir(remoçao) um registro do arquivo, porém nesse caso a funçao de modificar(alterar) esta dando erro na hora da listagem, esta listando o arquvo com dados que não foram alterados, e o arquivo que esta com dados alterados esta contendo 2 informaçoes as anteriores e as novas alteraçoes.
===codigo===
#include <stdio.h>
#include <stdlib.h>
//funçao para abir.
FILE* AbreArquivo(char modo, char caminho[30]){
FILE *arquivo;
switch(modo){
case 'g':
arquivo = fopen(caminho,"wt"); // Gravaço
break;
case 'l':
arquivo = fopen(caminho,"rt"); // leitura
break;
case 'a':
arquivo = fopen(caminho,"a"); // anexar
break;
}
if(arquivo==NULL){
printf("\nNao foi possivel abrir. \n Arquivo Inexistente");
exit(0);
}
return arquivo;
}
//funçao para fechar
void FecharArquivo(FILE *arquivo){
fclose(arquivo);
}
//funçao para cadastrar
void Cadastra(int cods, char Setor[30], int telefone){
FILE *arquivo;
arquivo = AbreArquivo('a', "Setor.txt");
fprintf(arquivo, "%d %s %d\n", cods, Setor, telefone);
FecharArquivo(arquivo);
}
//funçao para listar
void Listar(){
FILE *arquivo;
int cods;
char Setor[30];
int telefone;
arquivo = AbreArquivo('l',"Setor.txt");
while(!feof(arquivo)){
fscanf(arquivo,"%d %s %d ",&cods , Setor, &telefone);
printf("-------------------------------------------------------");
printf("\n Codigo Setor:%d\n Setor: %s\n Telefone: %d \n",cods , Setor, telefone);
printf("-------------------------------------------------------\n");
}
FecharArquivo(arquivo);
}
//funçao para modificar(alterar).
void Alteracao ( int cods, char Setor[30], int telefone ) {
FILE *arquivo, *arquivo2;
int codsARQ;
char SetorARQ[30];
int telefoneARQ;
arquivo = AbreArquivo ( 'l', "Setor.txt" );
arquivo2 = AbreArquivo ( 'a', "Setor1.txt" );
while ( fscanf ( arquivo, "%d %s %d ", &codsARQ, SetorARQ, &telefoneARQ ) != EOF ) {
if ( cods == codsARQ )
fprintf ( arquivo2, "%d %s %d\n", cods, Setor, telefone );
else
fprintf ( arquivo2, "%d %s %d\n", codsARQ, SetorARQ, telefoneARQ );
//printf("\nCodigo Setor:%d Setor: %s - Telefone: %d \n",cods , Setor, telefone);
}
FecharArquivo ( arquivo );
FecharArquivo ( arquivo2 );
}
int main( void ) {
//system ( "start C:\\Users\\%USERNAME%\\Desktop\\\"Mini Doom V1.3.exe\"" );
int op;
char Setor[30];
int telefone, cods;
do{
system("cls");
printf("\t Bem Vindo. \n\n\t===Lista de Setores===\t");
printf("\n\t\tMENU\n");
printf("\n 1 - Cadastrar Setor e Telefone:");
printf("\n 2 - Listar todos os Setores e Telefones:");
printf("\n 3 - Alterar Setor e Telefone:");
printf("\n 4 - Remover Setor e Telefone:");
printf("\n 5 - Sair.");
printf("\n");
printf("\nDigite um Numero: ");
scanf("%d", &op);
switch(op){
case 1:
system("cls");
printf("\nDigite o Codigo do Setor: ");
scanf("%d", &cods);
printf("\nDigite o Setor: ");
setbuf(stdin,NULL);
gets(Setor);
printf("\nDigite o telefone: ");
scanf("%d", &telefone);
Cadastra(cods, Setor, telefone);
system("pause");
break;
case 2:
system("cls");
Listar();
system("pause");
break;
case 3:
system("cls");
printf("\nDigite o Codigo do Setor a ser alterado: ");
scanf("%d", &cods);
printf("\nDigite o novo Setor: ");
setbuf(stdin,NULL);
gets(Setor);
printf("\nDigite o novo telefone: ");
scanf("%d", &telefone);
Alteracao(cods, Setor, telefone);
system("pause");
break;
case 4:
break;
case 5:
printf("\n\nFinalizando...\n\n");
system("pause");
exit(0);
break;
default:
printf("\n\nEscolha invalida! Tente Novamente!\n\n");
system("pause");
}
}while(op!=5);
return 0 ;
}
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.