KvArt

dz5_load

Jun 1st, 2016
99
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.72 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4. #include "dz5.h"
  5.  
  6. char *ReadWord(FILE *name, char *c) {
  7.     char *word = NULL, *rllc = NULL;
  8.     int i = 0;
  9.    
  10.     /*Postavljanje prvog znaka*/
  11.     word = malloc(10 * sizeof(char));
  12.     if (word == NULL) return(NULL);
  13.     word[i] = (*c);
  14.     i++;
  15.    
  16.     /*Ucitavanje ostalih znakova*/
  17.     while (((*c) = fgetc(name)) != ',' && (*c) != ';' && (*c) != '\n' && (*c)!=EOF) {
  18.         if (i % 10 == 0) {
  19.             rllc = realloc(word, (i + 10)*sizeof(char));
  20.             if (rllc == NULL) return(NULL);
  21.             else word = rllc;
  22.         }
  23.         word[i] = (*c);
  24.         i++;
  25.     }
  26.    
  27.     /*Realociranje stringa i postavljanje nultog znaka na kraj stringa*/
  28.     rllc = realloc(word, (i + 1)*sizeof(char));
  29.     if (NULL == rllc) return(NULL);
  30.     else word = rllc;
  31.     word[i] = '\0';
  32.     return word;
  33. }
  34.  
  35. /*Funkcija za ucitavanje naziva datoteka*/
  36. char *ImportName(int ulaz) {
  37.     char c, *DatName = NULL, *rllc;
  38.     int i = 0;
  39.  
  40.     if (ulaz) while ((c = getchar()) != '\n');
  41.     while ((c = getchar()) != '\n') {
  42.         if (i % 10 == 0) {
  43.             rllc = realloc(DatName, (i + 10)*sizeof(char));
  44.             if (rllc == NULL) return(NULL);
  45.             else DatName = rllc;
  46.         }
  47.         DatName[i++] = c;
  48.     }
  49.     rllc = realloc(DatName, (i + 1)*sizeof(char));
  50.     if (rllc == NULL) return(NULL);
  51.     else DatName = rllc;
  52.     DatName[i] = '\0';
  53.     return(DatName);
  54. }
  55.  
  56. /*Funckija za ucitavanje kontakata iz CSV datoteke*/
  57. User *ImportCSV(User *head, FILE *input) {
  58.     char c;
  59.     int i = 0;
  60.     User *CurrUser, *NewUser;
  61.     Field *CurrField, *NewField;
  62.  
  63.     /*Preskakanje prvog reda*/
  64.     while ((c = fgetc(input)) != '\n') {
  65.         if (c == EOF) return NULL;
  66.     }
  67.  
  68.  
  69.     /*Uvoz podataka iz CSV datoteke*/
  70.     head = malloc(sizeof(User));
  71.     if (head == NULL) return NULL;
  72.    
  73.     CurrUser = head;
  74.     CurrUser->previous = CurrUser->next = NULL;
  75.     CurrUser->values = malloc(sizeof(Field));
  76.     CurrField = CurrUser->values;
  77.    
  78.     if (CurrField == NULL) return NULL;
  79.    
  80.     CurrField->FieldValue = NULL;
  81.     CurrField->next = NULL;
  82.  
  83.     c = fgetc(input);
  84.     if (c == EOF) return NULL;
  85.  
  86.     while (1) {
  87.         if (c == '\n') {
  88.             c = fgetc(input);
  89.             if (c == EOF) break;
  90.             /*Ucitavanje novog korisnika*/
  91.             NewUser = malloc(sizeof(User));//
  92.             if (NewUser == NULL) return NULL;
  93.             NewUser->previous = CurrUser;
  94.             NewUser->next = NULL;
  95.  
  96.             CurrUser->next = NewUser;
  97.             CurrUser = NewUser;
  98.             CurrUser->values = malloc(sizeof(Field));//
  99.             CurrField = CurrUser->values;
  100.             if (CurrField == NULL) return NULL;
  101.             CurrField->FieldValue = NULL;
  102.             CurrField->next = NULL;
  103.             i = 0;
  104.         }
  105.         i++;
  106.         /*Alociranje polja za nov podatak*/
  107.         if ((c == ',') || (c == ';')) {
  108.             NewField = malloc(sizeof(Field));
  109.             if (NewField == NULL) return NULL;
  110.             NewField->FieldValue = NULL;
  111.             NewField->next = NULL;
  112.  
  113.             CurrField->next = NewField;
  114.             CurrField = CurrField->next;
  115.             c = fgetc(input);
  116.             continue;
  117.         }
  118.         CurrField->FieldValue = ReadWord(input, &c);
  119.     }
  120.     return(head);
  121. }
  122.  
  123. Ldif_f *LDIFValuesImport(FILE *name) {
  124.     Ldif_f *LDIFFields, *curr, *novi;
  125.     char c, *word = NULL, *rllc;
  126.     int i = 0;
  127.  
  128.     LDIFFields = malloc(sizeof(Ldif_f));
  129.     if (LDIFFields == NULL) return(NULL);
  130.     curr = LDIFFields;
  131.     while ((c = fgetc(name)) != EOF) {
  132.        
  133.         if (c == ' ') {
  134.             rllc = realloc(word, (i + 1)*sizeof(char));/**/
  135.             if (rllc == NULL) return NULL;
  136.             else word = rllc;
  137.             word[i] = '\0';
  138.             i = 0;
  139.             curr->FieldName = word;
  140.             fscanf(name, "%d", &curr->FieldValue);
  141.             word = NULL;
  142.             continue;
  143.         }
  144.        
  145.         if (c == ';') {
  146.             novi = malloc(sizeof(Ldif_f));/**/
  147.             if (novi == NULL) return NULL;
  148.             novi->next = NULL;
  149.             curr->next = novi;
  150.             curr = curr->next;
  151.             continue;
  152.         }
  153.  
  154.         if (i % 10 == 0) {
  155.             rllc = realloc(word, (i + 10)*sizeof(char));/**/
  156.             if (rllc == NULL) return NULL;
  157.             word = rllc;
  158.         }
  159.        
  160.         word[i++] = c;
  161.     }
  162.     return(LDIFFields);
  163. }
Add Comment
Please, Sign In to add comment