Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- #include "dz5.h"
- char *ReadWord(FILE *name, char *c) {
- char *word = NULL, *rllc = NULL;
- int i = 0;
- /*Postavljanje prvog znaka*/
- word = malloc(10 * sizeof(char));
- if (word == NULL) return(NULL);
- word[i] = (*c);
- i++;
- /*Ucitavanje ostalih znakova*/
- while (((*c) = fgetc(name)) != ',' && (*c) != ';' && (*c) != '\n' && (*c)!=EOF) {
- if (i % 10 == 0) {
- rllc = realloc(word, (i + 10)*sizeof(char));
- if (rllc == NULL) return(NULL);
- else word = rllc;
- }
- word[i] = (*c);
- i++;
- }
- /*Realociranje stringa i postavljanje nultog znaka na kraj stringa*/
- rllc = realloc(word, (i + 1)*sizeof(char));
- if (NULL == rllc) return(NULL);
- else word = rllc;
- word[i] = '\0';
- return word;
- }
- /*Funkcija za ucitavanje naziva datoteka*/
- char *ImportName(int ulaz) {
- char c, *DatName = NULL, *rllc;
- int i = 0;
- if (ulaz) while ((c = getchar()) != '\n');
- while ((c = getchar()) != '\n') {
- if (i % 10 == 0) {
- rllc = realloc(DatName, (i + 10)*sizeof(char));
- if (rllc == NULL) return(NULL);
- else DatName = rllc;
- }
- DatName[i++] = c;
- }
- rllc = realloc(DatName, (i + 1)*sizeof(char));
- if (rllc == NULL) return(NULL);
- else DatName = rllc;
- DatName[i] = '\0';
- return(DatName);
- }
- /*Funckija za ucitavanje kontakata iz CSV datoteke*/
- User *ImportCSV(User *head, FILE *input) {
- char c;
- int i = 0;
- User *CurrUser, *NewUser;
- Field *CurrField, *NewField;
- /*Preskakanje prvog reda*/
- while ((c = fgetc(input)) != '\n') {
- if (c == EOF) return NULL;
- }
- /*Uvoz podataka iz CSV datoteke*/
- head = malloc(sizeof(User));
- if (head == NULL) return NULL;
- CurrUser = head;
- CurrUser->previous = CurrUser->next = NULL;
- CurrUser->values = malloc(sizeof(Field));
- CurrField = CurrUser->values;
- if (CurrField == NULL) return NULL;
- CurrField->FieldValue = NULL;
- CurrField->next = NULL;
- c = fgetc(input);
- if (c == EOF) return NULL;
- while (1) {
- if (c == '\n') {
- c = fgetc(input);
- if (c == EOF) break;
- /*Ucitavanje novog korisnika*/
- NewUser = malloc(sizeof(User));//
- if (NewUser == NULL) return NULL;
- NewUser->previous = CurrUser;
- NewUser->next = NULL;
- CurrUser->next = NewUser;
- CurrUser = NewUser;
- CurrUser->values = malloc(sizeof(Field));//
- CurrField = CurrUser->values;
- if (CurrField == NULL) return NULL;
- CurrField->FieldValue = NULL;
- CurrField->next = NULL;
- i = 0;
- }
- i++;
- /*Alociranje polja za nov podatak*/
- if ((c == ',') || (c == ';')) {
- NewField = malloc(sizeof(Field));
- if (NewField == NULL) return NULL;
- NewField->FieldValue = NULL;
- NewField->next = NULL;
- CurrField->next = NewField;
- CurrField = CurrField->next;
- c = fgetc(input);
- continue;
- }
- CurrField->FieldValue = ReadWord(input, &c);
- }
- return(head);
- }
- Ldif_f *LDIFValuesImport(FILE *name) {
- Ldif_f *LDIFFields, *curr, *novi;
- char c, *word = NULL, *rllc;
- int i = 0;
- LDIFFields = malloc(sizeof(Ldif_f));
- if (LDIFFields == NULL) return(NULL);
- curr = LDIFFields;
- while ((c = fgetc(name)) != EOF) {
- if (c == ' ') {
- rllc = realloc(word, (i + 1)*sizeof(char));/**/
- if (rllc == NULL) return NULL;
- else word = rllc;
- word[i] = '\0';
- i = 0;
- curr->FieldName = word;
- fscanf(name, "%d", &curr->FieldValue);
- word = NULL;
- continue;
- }
- if (c == ';') {
- novi = malloc(sizeof(Ldif_f));/**/
- if (novi == NULL) return NULL;
- novi->next = NULL;
- curr->next = novi;
- curr = curr->next;
- continue;
- }
- if (i % 10 == 0) {
- rllc = realloc(word, (i + 10)*sizeof(char));/**/
- if (rllc == NULL) return NULL;
- word = rllc;
- }
- word[i++] = c;
- }
- return(LDIFFields);
- }
Add Comment
Please, Sign In to add comment