Ir para conteúdo
Fórum Script Brasil

steel_sp

Membros
  • Total de itens

    20
  • Registro em

  • Última visita

Sobre steel_sp

steel_sp's Achievements

0

Reputação

  1. Entendi. Mas acho que rodar um programa auxiliar iria ocupar memória à toa praticamente. E como é esse esquema de RunOnce? Valeu a ajuda!
  2. Pessoal, a pergunta é basicamente o título. Tem como eu chamar uma função e fazer um programa fechar e abrir novamente? Obrigado desde já!
  3. Detalhando melhor: Quero eliminar o _ (underline) piscante na tela. Tenho vários funções onde espero um valor de getch (sem eco), porém a única tecla aceita é o ESC. Por tal razão, não tem porque existir um cursor na tela.
  4. Nesse link, em "Aula 9 - Entradas e Saídas Padronizadas" tem algumas funções: http://www.mtm.ufsc.br/~azeredo/cursoC/c.html Basicamente, você tem que criar ou abrir um arquivo existente e escrever nele. Não é necessário criar vários arquivos. Nesse link acima tem alguns exemplos. Você também pode pesquisar por "agenda em C" no google que você acha alguma coisa.
  5. Pessoal, sabem alguma forma de fazer isto? Estou esperando um valor retornado pelo getch(), mas simplesmente não queria que o cursor aparecesse.
  6. Pessoal, o que preciso para resolver esse problema é uma forma de posicionar a escrita em determinada parte do arquivo. Como posso fazer isso?
  7. Pessoal, continuo com o problema. Alguém tem uma luz?
  8. Valeu pelas dicas Maligno! Dei uma mexida no código e agora está alterando, porém sempre o segundo registro. Possui incluir 10 registro que ele sempre vai alterar o segundo. Olhe como ficou o código: altera_reg() { int i, j, x, chave_busca[11]; char in_cpf=0, out_cpf[11]; arquivo=fopen("cadastro.txt","r+b"); if (arquivo==NULL) { puts("Erro ao abrir o arquivo!\n"); } printf("\nDigite o CPF do cadastro que deseja alterar: "); for(i=0;i<11;i++) { if (((i-1) == 2)||((i-1) == 5)) printf("."); if ((i-1) == 8) printf("-"); in_cpf = getch(); while ((in_cpf<48) || (in_cpf>57)) { in_cpf=getch(); } putch(in_cpf); out_cpf[i]=in_cpf; } for(i=0;i<11;i++) chave_busca[i]=out_cpf[i]-48; fread(&dados,sizeof(dados),1,arquivo); while(!feof(arquivo)) { for (i=0;i<11;i++) { if(dados.cpf[i]==chave_busca[i]) { fseek(arquivo,sizeof(dados),SEEK_CUR); j=TRUE; } } fread(&dados,sizeof(dados),1,arquivo); } if (j!=TRUE) printf("\n\nCadastro não encontrado!"); else { cont++; dados.code=cont; printf("\n\nNome: "); fflush(stdin); gets(dados.nome); printf("\nEndereco: "); fflush(stdin); gets(dados.ende); printf("\nTelefone: "); fflush(stdin); gets(dados.fone); printf("\nRG: "); fflush(stdin); gets(dados.rg); digitacpf(); validacpf(); for (x=0;x<11;x++) dados.cpf[x]=cpf[x]; printf("\n\nAlteracao realizada com sucesso!\n\n"); fseek(arquivo,sizeof(dados),SEEK_SET); fwrite(&dados,sizeof(dados),1,arquivo); fclose(arquivo); } sucess(); }
  9. O código é em C mesmo. Na verdade o cpf foi declarado como char e convertido para inteiro para facilitar no cálculo do DV. Posteriormente vi que atrapalhou todo o resto. Esse esquema do 0x30 eu desconhecia, mas realmente funcionou! Por enquanto não estou tendo problemas com o cpf em int, mas quase certamente terei que convertê-lo para char. Agradeço a ajuda!
  10. Senhores, estou com um problema em um trecho de código aqui. Quando eu chamo a função para editar um registro em um arquivo .txt, ela aparentemente edita, porém apaga todos os outros registros. Creio que seja algum erro de lógica. Avaliem o código, por gentileza: altera_reg() { int i, j, x, chave_busca[11]; char in_cpf=0, out_cpf[11]; arquivo=fopen("cadastro.txt","rw"); if (arquivo==NULL) { puts("Erro ao abrir o arquivo!\n"); } printf("\nDigite o CPF do cadastro que deseja alterar: "); for(i=0;i<11;i++) { if (((i-1) == 2)||((i-1) == 5)) printf("."); if ((i-1) == 8) printf("-"); in_cpf = getch(); while ((in_cpf<48) || (in_cpf>57)) { in_cpf=getch(); } putch(in_cpf); out_cpf[i]=in_cpf; } for(i=0;i<11;i++) chave_busca[i]=out_cpf[i]-48; fread(&dados,sizeof(dados),1,arquivo); while(!feof(arquivo)) { for (i=0;i<11;i++) { if(dados.cpf[i]==chave_busca[i]) { fseek(arquivo,sizeof(dados),SEEK_CUR); j=TRUE; } } fread(&dados,sizeof(dados),1,arquivo); } if (j!=TRUE) printf("\n\nCadastro não encontrado!"); else { arquivo=fopen("cadastro.txt","wb"); if(arquivo==NULL) printf("\nErro ao abrir o arquivo: "); cont++; dados.code=cont; printf("\n\nNome: "); fflush(stdin); gets(dados.nome); printf("\nEndereco: "); fflush(stdin); gets(dados.ende); printf("\nTelefone: "); fflush(stdin); gets(dados.fone); printf("\nRG: "); fflush(stdin); gets(dados.rg); digitacpf(); validacpf(); for (x=0;x<11;x++) dados.cpf[x]=cpf[x]; printf("\n\nAlteracao realizada com sucesso!\n\n"); fwrite(&dados,sizeof(dados),1,arquivo); fclose(arquivo); } } Obrigado!
  11. Senhores, tenho uma variável chamada cpf[11] e declarada como inteiro. Preciso converter o valor contido nela em uma string. Por exemplo, o array {1,2,3,4,5} em uma string "12345". Como posso fazer isso? Quero fazer isso porque irei usar a variável cpf para fazer busca em arquivos, e vejo que se esta estiver em uma string facilitará meu trabalho. Obrigado desde já.
  12. cpf é um array do tipo inteiro. Fiz o seguinte: dados.cpf=cpf Assim aparece a mensagem que o arquivo foi gravado com sucesso, porém nada é escrito nele. Por que será? E quanto a passagem de parâmetros, estava dando tantos problemas que eu declarei cpf como variável global. Se puder me dar um exemplo funcional, eu agradeço, assim eu tento novamente. Quanto ao struct, aqui está: struct agenda { char nome[40]; char endereco[50]; char fone[10]; char rg[10]; int cpf; }; Não, é do tipo inteiro mesmo. Era char, mas eu converti para int para poder fazer operações aritméticas e validar o CPF. ... Obrigado pelas respostas!
  13. Boa noite senhores. A função abaixo escreve os dados em um arquivo, porém está travando no "gets(dados.cpf)". Se troco o gets por um "scanf("%d",dados.cpf)" o programa fica simplesmente parado. Segue a função problemática: void novoreg() { char lixo[255]; struct agenda dados; gets(lixo); fseek(arquivo,0,SEEK_END); printf("\nDigite os dados da pessoa nos campos abaixo:\n"); printf("\nNome: "); gets(dados.nome); printf("\nEndereço: "); gets(dados.endereco); printf("\nTelefone: "); gets(dados.fone); printf("\nRG: "); gets(dados.rg); digitacpf(); validacpf(); gets(dados.cpf); fwrite(&dados, sizeof(struct agenda),1,arquivo); printf("\n\nRegistro adicionado com sucesso!\n"); } Esclarecendo: 1 - criei uma struct chamado agenda; 2 - função digitacpf recebe um cpf em char e converte em int. 3 - função validacpf confere se o cpf é válido ou não, fazendo os devidos cálculos. Onde está o erro?
  14. Só seguir os comentários: #include<stdio.h> #include<stdlib.h> main() { int vet[15],i,j,aux; srand(time(NULL)); // gera valores aleatórios a cada execução for (i=0;i<15;i++) // laço para gerar 15 valores { vet[i]=rand()%100; // atribui os valores gerados a 15 posições de um vetor } /* faz a ordenação, passando posição por posição. Se o valor que estiver a frente foi menor do que está atrás, então o troca-se de posição. Esse método é chamado de bolha. */ for (i=0;i<15;i++) { for (j=i+1;j<15;j++) { if (vet[i]>vet[j]) { aux=vet[i]; vet[i]=vet[j]; vet[j]=aux; } } printf("%d ", vet[i]); // imprimi o vetor com os valores já ordenados } printf("\n\nMaior valor: %d \nMenor valor: %d", vet[14], vet[0]); // a posição 0 contém o menor valor e posição 14 o maior valor getch(); }
  15. Estou usando como IDE o Code::Blocks 10.05 e o Dev-C++ 4.9.9.2. Como compilador o GNU GCC Compiler. Estou achando que é alguma configuração no sistema operacional, só não sei onde, porque compila mas não executa em full screen.
×
×
  • Criar Novo...