Няшная / Говнокод #25803 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
  13. 13
  14. 14
  15. 15
  16. 16
  17. 17
  18. 18
  19. 19
  20. 20
  21. 21
  22. 22
  23. 23
  24. 24
  25. 25
  26. 26
  27. 27
  28. 28
  29. 29
  30. 30
  31. 31
  32. 32
  33. 33
  34. 34
  35. 35
  36. 36
  37. 37
  38. 38
  39. 39
  40. 40
  41. 41
  42. 42
  43. 43
  44. 44
  45. 45
  46. 46
  47. 47
  48. 48
  49. 49
  50. 50
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

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

char** explode(char* inaddr, char s)
{
char**  xxx;
xxx=(char**)malloc(strlen(inaddr));
char* temp;
temp=(char*)malloc(strlen(inaddr));

int u=0,i=0,t=0;

char* getln(char *addr)
{
while (*(addr+i) !=s && *(addr+i) !='\0' && *(addr+i) !=EOF)
{temp[t]=inaddr[i];t++;i++;};
temp[t]='\0';
i++;t=0;
return(temp);
}

while (inaddr[i])
{
xxx[u]=strdup(getln(inaddr));
u++;
};
return(xxx);
};

//для проверки результата
char* str="Y000:aa;dsf;dddsf;dsfdsf;1YYYYY;YYYYY;YYYYYY;sfd:sfdsfdsfdsfdsfdsfdsfdsf1YYYYYYY:YYYYYYYYY;b;cc;Ydsfds;876786876a:1132";
char** eee;
eee=(char**)malloc(strlen(str));


eee=explode(str, ';');

int zz=0;
while(eee[zz])
{
  printf("%s\n",eee[zz] );zz++;
};
printf("%c",eee[0][0] );
printf("\n" );

}

функция explode() как php давно о такой мечтал.

Запостил: killer1804 killer1804, (Updated )

Комментарии (21) RSS

    • P.S. Поясню:
      eee=(char**)malloc(strlen(str)); // тут мы выделили память и указатель сохранили в eee
      
      
      eee=explode(str, ';'); // а тут мы затёрли указатель на выделенный блок результатом вызова функции explode
      // теперь блок, выделенный несколькими строками выше, стал космическим мусором


      Не надо так.
      Ответить
    • #include <stdio.h>
      #include <stdlib.h>
      #include <string.h>
      
      int main(int argc, char* argv[]) {
        char** explode(char* inaddr, char s) {
          char** xxx;
          xxx = (char**)malloc(strlen(inaddr));
          char* temp;
          temp = (char*)malloc(strlen(inaddr));
      
          int u = 0, i = 0, t = 0;
      
          char* getln(char* addr) {
            while (*(addr + i) != s && *(addr + i) != '\0' && *(addr + i) != EOF) {
              temp[t] = inaddr[i];
              t++;
              i++;
            };
            temp[t] = '\0';
            i++;
            t = 0;
            return (temp);
          }
      
          while (inaddr[i]) {
            xxx[u] = strdup(getln(inaddr));
            u++;
          };
          return (xxx);
        };
      
        //для проверки результата
        char* str =
            "Y000:aa;dsf;dddsf;dsfdsf;1YYYYY;YYYYY;YYYYYY;sfd:"
            "sfdsfdsfdsfdsfdsfdsfdsf1YYYYYYY:YYYYYYYYY;b;cc;Ydsfds;876786876a:1132";
        char** eee;
        eee = (char**)malloc(strlen(str));
      
        eee = explode(str, ';');
      
        int zz = 0;
        while (eee[zz]) {
          printf("%s\n", eee[zz]);
          zz++;
        };
        printf("%c", eee[0][0]);
        printf("\n");
      }
      Ответить
  • Скажите это слово!
    WORD   e_cblp;
    Ответить

Добавить комментарий

Из-за тебя ушел bormand, guest!

    А не использовать ли нам bbcode?


    8