Re(10): C - dynamischer speicher und arrays
Geizhals » Forum » Programmierung » C - dynamischer speicher und arrays (39 Beiträge, 572 Mal gelesen) Top-100 | Fresh-100
Du bist nicht angemeldet. [ Login/Registrieren ]
..  Re(2): C - dynamischer speicher und arrays  (RoHS am 03.10.2008, 14:04:36)
....  Re(4): C - dynamischer speicher und arrays  (RoHS am 03.10.2008, 14:53:00)
.....  Re(5): C - dynamischer speicher und arrays  (Switi am 03.10.2008, 15:12:35)
......  Re(6): C - dynamischer speicher und arrays  (RoHS am 03.10.2008, 16:07:32)
.......  Re(7): C - dynamischer speicher und arrays  (Switi am 03.10.2008, 16:11:53)
........  Re(8): C - dynamischer speicher und arrays  (RoHS am 03.10.2008, 16:20:55)
.........  Re(9): C - dynamischer speicher und arrays  (Switi am 03.10.2008, 16:34:37)
..........
Re(10): C - dynamischer speicher und arrays
03.10.2008, 17:43:46
Delimiters dürfen nur ein Zeichen lang sein :).
Ein bisserl was musst du auch noch machen ;).

lg Switi

-------------------------------------------------------------------

#include
#include
#include

int explode(const char* delimiter, const char* str, char*** dest_array, int* size)
{
  int length_str = 0;
  length_str = strlen(str);

  if (strlen(delimiter) > length_str)
    {
      return 1;
    }

  int i = 0;
  int j = 0;
  int nr_tokens = 0;
  // count tokens:
  for (i=0; i<length_str; ++i)
    {
      if (str[i] == delimiter[j])
{
  ++nr_tokens;
}
    }

  //ok, now malloc token nr + 1
  char** tarr = malloc((nr_tokens + 1) * sizeof(char*));

  // copy tokens
  int start = 0;
  int end   = 0;
  int token_idx = 0;
  int token_size = 0;
  for (i=0; i    {
      if ((str[i] == delimiter[j]) || ( i+1 == length_str))
{
  end = i;
  token_size = (end - start + 1);
  tarr[token_idx] = malloc(token_size * sizeof(char));
  strncpy(tarr[token_idx], (str + start), end - start);
  tarr[token_idx][end-start] = '\0';
  printf("%d -> %s\n", token_idx, tarr[token_idx]);

  start = end + 1;
  ++token_idx;
}
    }

  *size = token_idx;
  *dest_array = tarr;
  return 0;
}

int main(int argc, char* argv[])
{

  const char* example = "foo:*:1023:1000::/home/foo:/bin/sh";

  char** dest_array = 0;
  int size = 0;

  if (explode(":", example, &dest_array, &size) == 0)
    {
      int i;
      for (i=0; i<size; ++i)
{
  printf(" %d = %s\n", i, dest_array[i]);
}
    }
  else
    {
      printf("explode call failed!\n");
    }

  return 0;
}

--
Gibts noch Leute, die die Signatur nicht blocken?
C++, Mono, C#, Java, XML, Open Source developer
Ubuntu - Linux for Human Beings

[ Dieser Beitrag wurde inzwischen editiert. Die aktuelle Version befindet sich hier. ]
Antworten PM Alle Chronologisch Zum Vorgänger
 
Melden nicht möglich
..........  Re(10): C - dynamischer speicher und arrays  (Switi am 03.10.2008, 17:43:46)
............  Re(12): C - dynamischer speicher und arrays  (Switi am 03.10.2008, 18:08:10)
..........  Re(10): C - dynamischer speicher und arrays  (RoHS am 03.10.2008, 21:01:36)
.  Re: C - dynamischer speicher und arrays  (black77 am 03.10.2008, 15:54:37)
.  Re: C - dynamischer speicher und arrays  (RoHS am 09.10.2008, 01:52:59)
..  Re(2): C - dynamischer speicher und arrays  (mko am 09.10.2008, 06:37:02)
...  Re(3): C - dynamischer speicher und arrays  (RoHS am 09.10.2008, 06:54:15)
....  Re(4): C - dynamischer speicher und arrays  (mko am 09.10.2008, 06:57:55)
.....  Re(5): C - dynamischer speicher und arrays  (RoHS am 09.10.2008, 07:10:48)
..... Vom Autor zurückgezogen oder Autor hat seine Registrierung nicht bestätigt  (substitute am 09.10.2008, 14:05:55)
......  Re(6): C - dynamischer speicher und arrays  (mko am 09.10.2008, 15:05:34)
......  Re(6): C - dynamischer speicher und arrays  (RoHS am 10.10.2008, 19:24:00)
....  Re(4): C - dynamischer speicher und arrays  (Switi am 09.10.2008, 11:36:26)
.....  Re(5): C - dynamischer speicher und arrays  (RoHS am 09.10.2008, 12:49:10)
......  Re(6): C - dynamischer speicher und arrays  (Switi am 09.10.2008, 12:51:02)
..  Re(2): C - dynamischer speicher und arrays  (Switi am 09.10.2008, 11:55:02)
...  Re(3): C - dynamischer speicher und arrays  (RoHS am 09.10.2008, 12:50:41)
...  Re(3): C - dynamischer speicher und arrays  (RoHS am 10.10.2008, 19:22:53)
 

Dieses Forum ist eine frei zugängliche Diskussionsplattform.
Der Betreiber übernimmt keine Verantwortung für den Inhalt der Beiträge und behält sich das Recht vor, Beiträge mit rechtswidrigem oder anstößigem Inhalt zu löschen.
Datenschutzerklärung