Advertisement
Guest User

Untitled

a guest
Dec 6th, 2016
69
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.18 KB | None | 0 0
  1.  
  2. void adicionar_digito9_ao_telefone(FILE * pFile)
  3. {
  4. int id;
  5.  
  6. int encontrou = 0;
  7.  
  8. FILE *newFile = fopen("temp.dat","w+");
  9.  
  10. int NumeroDeEntradasNoArquivo = 5;
  11.  
  12. //Contato sendo lido AGORA
  13. CONTATO_T c;
  14.  
  15. //Espaço para os contatos da lista
  16. CONTATO_T contatosDoArquivo[NumeroDeEntradasNoArquivo];
  17.  
  18. //Contador / index dos contatos
  19. int indexContato=0;
  20.  
  21. //Variavel que irá estocar temporariamente os valores dos novos telefones móveis
  22. char novo_t_movel[13];
  23.  
  24. //contador generico do programa
  25. int contador = 0;
  26.  
  27.  
  28. //Este loop irá ler todas as entradas presentes no arquivo. (Atencao ao número máximo que cabe no contatosDoArquivo, ok?)
  29. while (fscanf(pFile,"%d %s %d %d %d %s %s %s", &c.id,c.nome,&c.dia,&c.mes,&c.ano,c.email,c.t_movel,c.t_fixo)!= EOF)
  30. {
  31. contatosDoArquivo[indexContato].id = c.id;
  32. contatosDoArquivo[indexContato].nome = c.nome;
  33. contatosDoArquivo[indexContato].dia = c.dia;
  34. contatosDoArquivo[indexContato].mes = c.mes;
  35. contatosDoArquivo[indexContato].ano = c.ano;
  36. contatosDoArquivo[indexContato].email = c.email;
  37. contatosDoArquivo[indexContato].t_movel = t_movel;
  38. contatosDoArquivo[indexContato].t_fixo = t_fixo;
  39.  
  40. indexContato++;
  41. }
  42.  
  43. //Colocamos na variavel temporaria i a quantidade de contatos. Lembrando que a contagem começa em 0, isto é
  44. //0 é uma posicao valida.
  45. i = indexContato;
  46.  
  47.  
  48. //Este loop irá passar de contato em contato, adicionando 9 aos números de telefone móvel de cada contato.
  49. while( i > = 0){
  50.  
  51. //A estrategia é montar uma nova string de telefone aqui dentro, e descatar a anterior
  52.  
  53. //Primeiro novo digito - 9
  54. novo_t_movel[0] = 9;
  55.  
  56. //Esse loop ira passar os demais valores para a nova variavel.
  57. for(contador = 1; contador < 13; contador++)
  58. novo_t_movel[contador] = contatosDoArquivo[i].t_movel[contador - 1]
  59.  
  60.  
  61. //Agora que o novo numero está 100% convertido, passamos o seu ponteiro para a nossa lista de contatos.
  62. contatosDoArquivo[i].t_movel = novo_t_movel;
  63.  
  64. i--;
  65.  
  66. }
  67.  
  68. //Fecha o ponteiro e exclui o arquivo da agenda original. A ideia é regravá-lo com os novos dados.
  69. fclose(pFile);
  70. remove("agenda.dat");
  71.  
  72. //Essa funcao escreve o arquivo os dados.
  73. for(contador = 0; contador = indexContato - 1; contador++ ){
  74. fprintf(newFile,"%d %s %d %d %d %s %s %s\n", contatosDoArquivo[contador].id,contatosDoArquivo[contador].nome,contatosDoArquivo[contador].dia,contatosDoArquivo[contador].mes,contatosDoArquivo[contador].ano,contatosDoArquivo[contador].email,contatosDoArquivo[contador].t_movel,contatosDoArquivo[contador].t_fixo);
  75. }
  76.  
  77. //Essa funcao renomeia o arquivo anterior para o seu novo nome.
  78. rename("temp.dat","agenda.dat");
  79.  
  80. //destruimos o ponteiro novo.
  81. fclose(newFile);
  82.  
  83. //Por fim, devemos abrir o arquivo novamente e colocalo no ponteiro anterior (o do começo do codigo)
  84. pFile = fopen("agenda.dat", "r+");
  85.  
  86. //Printa a frase desejada.
  87. printf("DIGITO 9 ADICIONADO AOS CELULARES\n");
  88.  
  89.  
  90. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement