daily pastebin goal
58%
SHARE
TWEET

resumo01

Shuabah Apr 16th, 2018 (edited) 72 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include <stdio.h>
  2. #include <locale.h>
  3. #include <stdlib.h>
  4. #include <string.h>
  5.  
  6. char* strtoke(char *str, const char *delim){
  7.     static char *start = NULL;
  8.     char *token = NULL;
  9.     if (str) start = str;
  10.     if (!start) return NULL;
  11.     token = start;
  12.     start = strpbrk(start, delim);
  13.     if (start) *start++ = '\0';
  14.     return token;
  15. }
  16.  
  17. struct nodo{
  18.     char nome[100];
  19.     int ano;
  20.     char ator[100];
  21.     struct nodo *next;
  22. };
  23.  
  24. void ins_ord(struct nodo **head, char *str){
  25.     // Funcao recursiva para adicionar os dados em ordem alfabetica
  26.     if(*head == NULL || strcoll((*head)->nome, str) >= 1){
  27.         char *p;
  28.  
  29.         struct nodo *ptnovo;
  30.         ptnovo = (struct nodo *)malloc(sizeof(struct nodo));
  31.  
  32.         p = strtoke(str, ",");
  33.         strcpy(ptnovo->nome, p); // Copia o que o 'p' esta apontando para ptnovo->nome
  34.  
  35.         p = strtoke(NULL, ",");
  36.         ptnovo->ano = atoi(p);
  37.  
  38.         p = strtoke(NULL, ",");
  39.         strcpy(ptnovo->ator, p);
  40.  
  41.         ptnovo->next = *head;
  42.         *head = ptnovo;
  43.         p = NULL;
  44.         return;
  45.     }
  46.     ins_ord(&(*head)->next, str);
  47. }
  48.  
  49. void escreve(struct nodo *head){
  50.     if(head == NULL) return;
  51.     printf("%s\n", head->nome);
  52.     printf("\t%d\n", head->ano);
  53.     printf("\t%s", head->ator);
  54.     printf("\n\n");
  55.     escreve(head->next);
  56. }
  57.  
  58. int main(){
  59.     /******************************************************************************/
  60.     /* Primeiramente eh aberto o arquivo de texto e verificado se ele esta vazio. */
  61.     /******************************************************************************/
  62.     setlocale(LC_ALL,""); // Configura para o programa aceitar acentos e caracteres especificos (faz uso da biblioteca locale.h).
  63.     FILE *resumo;
  64.     resumo = fopen("D:\\resumo.txt","rt");
  65.     if(resumo == NULL){
  66.         printf("ERRO"); // Caso o arquivo nao exista ou algo similar a mensagem ERRO aparece.
  67.         return 0;
  68.     }
  69.     /**************************************************/
  70.     /* Procede-se para a leitura dos dados do arquivo */
  71.     /**************************************************/
  72.     struct nodo *head = NULL;
  73.     char str[1000];
  74.     while(fgets(str, 1000, resumo)){ // Repeticao que vai até str == NULL (fim do arquivo)
  75.         ins_ord(&head, str);
  76.     }
  77.     escreve(head);
  78. }
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top