ramontricolor12

LISTA 11 - Exercício 02

Sep 3rd, 2013
68
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.42 KB | None | 0 0
  1. /*CABEÇALHO
  2.    Arquivo: LISTA 11 - Exercício 02.c
  3.    Objetivo: Através de uma lista encadeada, armazene todos os registros na memória do computador.
  4.    Autor(a): RAMON BORGES SALES, PAULO VICTOR DA SILVA RIBEIRO, RENATO HUDSON DE OLIVEIRA JUNIOR.
  5. */
  6.  
  7. #include <stdio.h>
  8. #include <stdlib.h>
  9. #include <string.h>
  10.  
  11. typedef struct Tipo_registro
  12. {
  13.     char nome[100];
  14.     long int codigo;
  15. }registro;
  16.  
  17. typedef struct Tipo_NO
  18. {
  19.     registro info;
  20.     struct Tipo_NO *prox;
  21. }NO;
  22.  
  23. //PROTÓTIPO DE FUNÇÕES
  24. void lerArquivo(NO *cadastros);
  25. NO *aloca();
  26. void capturaLetras(char caractere[]);
  27.  
  28. int main()
  29. {
  30.     int cont;
  31.     int posicao;
  32.     NO *listaRegistros;
  33.     NO *p;
  34.     listaRegistros->prox = NULL;
  35.     lerArquivo(listaRegistros);
  36.  
  37.     printf("Informe o codigo (1111111 à 9999999) referente a um nome: ");
  38.     scanf("%d", &posicao);
  39.     posicao -= posicao - 1111111;
  40.  
  41.     for(cont = 1, p = listaRegistros; ; p = p->prox, cont++)
  42.     {
  43.         if(cont == posicao)
  44.         {
  45.             printf("%d - %s", listaRegistros->info.codigo, listaRegistros->info.nome);
  46.             break;
  47.         }
  48.     }
  49.     return 0;
  50. }
  51.  
  52. void lerArquivo(NO *cabeca)
  53. {
  54.     int i = 0;
  55.     long int numeros;
  56.     char aux[30], *resul, nomes[30];
  57.     FILE *fp;
  58.     NO *auxiliar, *novo;
  59.  
  60.     auxiliar = cabeca;
  61.     fp = fopen("registros.txt", "r");
  62.  
  63.     resul = fgets(aux, 30, fp);
  64.     while (resul!= NULL)
  65.     {
  66.         numeros = atoi(aux);
  67.         aux+9;
  68.         capturaLetras(aux);
  69.         strcpy(nomes, aux);
  70.  
  71.         while(auxiliar->prox != NULL)
  72.             auxiliar = (auxiliar->prox);
  73.         novo = aloca();
  74.         novo->info.codigo = numeros;
  75.         strcpy(novo->info.nome, nomes);
  76.  
  77.         auxiliar->prox = novo;
  78.         novo->prox = NULL;
  79.  
  80.         resul = fgets(aux, 30, fp);
  81.         if(i > 0)
  82.             novo = novo->prox;
  83.         i = 1;
  84.     }
  85.     return;
  86. }
  87.  
  88. NO *aloca()
  89. {
  90.     return malloc (sizeof(NO));
  91. }
  92.  
  93. void capturaLetras(char caractere[])
  94. {
  95.     int i = 0, j = 0;
  96.     char *novaPalavra;
  97.     novaPalavra = (char*)malloc(sizeof(char));
  98.     while(caractere[i] != '\0')
  99.     {
  100.         if(caractere[i] >= 'a' && caractere[i] <= 'z' || caractere[i] >= 'A' && caractere[i] <= 'Z')
  101.         {
  102.             novaPalavra = (char*)realloc(novaPalavra, j+1);
  103.             novaPalavra[j] = caractere[i];
  104.             j++;
  105.         }
  106.         i++;
  107.     }
  108.     strcpy(caractere, novaPalavra);
  109.     return;
  110. }
Advertisement
Add Comment
Please, Sign In to add comment