Advertisement
Guest User

Untitled

a guest
Apr 1st, 2015
198
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.42 KB | None | 0 0
  1. //#include "funciones.h"
  2.  
  3. #include "estructuras.h"
  4.  
  5. #include <stdio.h>
  6.  
  7. #include <stdlib.h>
  8.  
  9. #include <string.h>
  10.  
  11.  
  12.  
  13. //Por hacer cuerpo de funciones
  14.  
  15. void loadSettings(char fileName [], struct configParam* paramsReaded [], int* length,
  16.  
  17.     char* statusCode){
  18.  
  19.     FILE* archivo;
  20.  
  21.     char buffer[1000]; //Buffer usado en fgets()
  22.  
  23.     char* prop; //Una propiedad
  24.  
  25.     char* value; //Valor correspondiente a esa propiedad
  26.  
  27.  
  28.  
  29.     archivo = fopen(fileName, "r"); //abrimos el archivo para conteo de lineas
  30.  
  31.  
  32.  
  33.  
  34.  
  35.     while(fgets(buffer, 1000, archivo) != NULL){
  36.  
  37.         *length = *length + 1; //la cantidad de lineas del archivo correspondera a la cantidad de elementos de paramsReaded[]
  38.  
  39.     }
  40.  
  41.     fclose(archivo); //cerramos el archivo para resetear, de lo contrario fgets() deja de funcionar
  42.  
  43.     (*paramsReaded) = malloc(sizeof(struct configParam)); //Asignamos memoria del tamaño de un struct configParam por la cantidad de configParams
  44.  
  45.     printf("Direccion: %p\n", paramsReaded[0]);
  46.  
  47.     archivo = fopen(fileName, "r"); //reabrimos el archivo para la lectura de las lineas
  48.  
  49.     int i = 0;
  50.  
  51.     while(fgets(buffer, 1000, archivo) != NULL){
  52.  
  53.         printf("%d\t", i);
  54.  
  55.         if (i != 0){
  56.  
  57.             paramsReaded[i] = malloc(sizeof(struct configParam));
  58.  
  59.             // (*paramsReaded[i]).valor = malloc(50);
  60.  
  61.             // (*paramsReaded[i]).clave = malloc(50);
  62.  
  63.         }
  64.  
  65.         printf("%d, %p\n", i, paramsReaded[i]);
  66.  
  67.         prop = malloc(sizeof(char)*strlen(buffer));
  68.  
  69.         value = malloc(sizeof(char)*strlen(buffer)); //Asignamos memoria
  70.  
  71.  
  72.  
  73.         strcpy(prop, buffer);
  74.  
  75.         strcpy(value, buffer); //Copia de strings en prop y value
  76.  
  77.  
  78.  
  79.         prop = strtok(prop, " =\n"); //separacion de la propiedad y su valor
  80.  
  81.         value = strtok(NULL, " =\n");
  82.  
  83.         printf("%s %s\n", prop, value);
  84.  
  85.  
  86.  
  87.         paramsReaded[i]->clave = prop; //asignacion a la structura
  88.  
  89.         paramsReaded[i]->valor = value;
  90.  
  91.         printf("%s = %s\n", paramsReaded[i]->clave, paramsReaded[i]->valor);
  92.  
  93.         i++;
  94.  
  95.     }
  96.  
  97.     fclose(archivo); //finalmente cerramos el archivo
  98.  
  99. }
  100.  
  101.  
  102.  
  103. int main(){
  104.  
  105.     char ruta[] = "/home/rafael/Documents/Proyecto_Paradigmas/C/prueba.txt";
  106.  
  107.     struct configParam* propiedades;
  108.  
  109.     int largo = 0;
  110.  
  111.     char* estado;
  112.  
  113.    
  114.  
  115.     loadSettings(ruta, &propiedades, &largo, estado);
  116.  
  117.     int i = 0;
  118.  
  119.     //printf("En main() %s = %s\n", propiedades[1].clave, propiedades[1].valor);
  120.  
  121.     for (i = 0; i < largo; i++){
  122.  
  123.         //printf("En main() %s = %s\n", propiedades[i].clave, propiedades[i].valor);
  124.  
  125.     }
  126.  
  127.     return 0;
  128.  
  129. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement