Ver Mensaje Individual
  #5 (permalink)  
Antiguo 15/12/2012, 01:11
Avatar de guzzano
guzzano
 
Fecha de Ingreso: julio-2010
Ubicación: Isla de Margarita
Mensajes: 162
Antigüedad: 13 años, 9 meses
Puntos: 13
Respuesta: Bucle inusual

Nada más que decir, ¡GENIO! muchas gracias!

Edito, probe, estudie un poco sobre los arrays multidimensionales, los probe en varias cosas y me funcionaron. Pero aquí, al parecer no, a ver si me puedes decir en donde me he equivocado, y disculpa el abuso.

Código C:
Ver original
  1. char *depends_parser(FILE *pkgfile_dir)
  2. {
  3.     char character, last_character = '0', *string_depends = NULL, **depends_alone = NULL, *depends_p;
  4.     int character_count = 0, memory_count = 1, memory_count2 = 1, position_check = 0;
  5.  
  6.     depends_alone = (char **) malloc(sizeof(char *)*memory_count2);
  7.  
  8.     while ((character = getc(pkgfile_dir)) != EOF)
  9.     {
  10.         if (character == '\n')
  11.         {
  12.             if ((strstr(string_depends, "Depends on:")))
  13.             {
  14.                
  15.                 string_depends[character_count] = '\0';
  16.                 depends_p = string_depends;
  17.  
  18.                 character_count = 0;
  19.                 memory_count = 1;
  20.                
  21.                 while (*depends_p != '\0')
  22.                 {
  23.                    
  24.                     if (*depends_p == ':')
  25.                     {
  26.                         position_check = 1;
  27.                         depends_p++;
  28.  
  29.                         if (!isalpha(*depends_p)){}
  30.                         else
  31.                         {
  32.                             depends_p--;
  33.                         }
  34.                     }
  35.                     else if (position_check == 1)
  36.                     {
  37.                         if (*depends_p == ' ')
  38.                         {
  39.                             memory_count2++;
  40.  
  41.                             depends_alone = (char **) realloc(depends_alone, sizeof(char *)*memory_count2);
  42.                            
  43.                             character_count = 0;
  44.                             memory_count = 1;
  45.                         }
  46.                        
  47.                         if (isalpha(*depends_p) || *depends_p == '-' || isdigit(*depends_p))
  48.                         {
  49.                            
  50.                             depends_alone[memory_count2] = (char *) realloc(depends_alone[memory_count2], sizeof(char)*memory_count);
  51.                             depends_alone[memory_count2][character_count] = *depends_p;
  52.  
  53.  
  54.                             character_count++;
  55.                             memory_count++;
  56.                         }
  57.                     }
  58.                    
  59.                     depends_p++;
  60.                 }
  61.                 break;
  62.             }
  63.             else
  64.             {
  65.                 character_count = 0;
  66.                 memory_count = 1;
  67.                 string_depends = malloc(0);
  68.             }
  69.         }
  70.         else
  71.         {
  72.            
  73.             string_depends = (char *) realloc(string_depends, memory_count);
  74.             string_depends[character_count] = character;
  75.  
  76.             character_count++;
  77.             memory_count++;
  78.         }
  79.     }
  80.  
  81.     //puts(depends_alone[0]);
  82.  
  83.     if (string_depends)
  84.         free(string_depends);
  85. }

Última edición por guzzano; 15/12/2012 a las 10:29