1. Си / Говнокод #17719

    +133

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    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
    51. 51
    52. 52
    53. 53
    54. 54
    55. 55
    56. 56
    57. 57
    58. 58
    59. 59
    60. 60
    61. 61
    62. 62
    63. 63
    64. 64
    int start()
      {
     string filename = "GBPJPY.hst";
     int i_unused[30];
       
     int FILE = FileOpenHistory(filename, FILE_READ|FILE_BIN);
     FileSeek(FILE, 0, SEEK_SET);
     
     int version    = FileReadInteger (FILE, LONG_VALUE);
     string c_copyright  = FileReadString (FILE, 64);
     string name    = FileReadString (FILE, 12);
     int period     = FileReadInteger (FILE, LONG_VALUE);
     int i_digits   = FileReadInteger (FILE, LONG_VALUE);
     int timesign    = FileReadInteger (FILE, LONG_VALUE);       //timesign
     datetime last_sync   = FileReadInteger (FILE, LONG_VALUE);       //last_sync
     FileReadArray (FILE, i_unused, 0, 13);
     
     Print("Version = ", version);
     Print("c_copyright = ", c_copyright);
     Print("Equity = ", name);
     Print("period = ", period);
     Print("i_digits = ", i_digits);
     Print("timesign = ", TimeToStr(timesign, TIME_DATE|TIME_SECONDS));
     Print("last_sync = ", last_sync);
     Print("i_unused = ", i_unused[0]);
     Print("i_unused = ", i_unused[1]);
     Print("i_unused = ", i_unused[2]);
     Print("i_unused = ", i_unused[3]);
     Print("i_unused = ", i_unused[4]);
     Print("i_unused = ", i_unused[5]);
     Print("i_unused = ", i_unused[6]);
     Print("i_unused = ", i_unused[7]);
     Print("i_unused = ", i_unused[8]);
     Print("i_unused = ", i_unused[9]);
     Print("i_unused = ", i_unused[0]);
     Print("i_unused = ", i_unused[11]);
     Print("i_unused = ", i_unused[12]);
     Print("Time    = ", FileReadInteger (FILE, LONG_VALUE));
     Print("Price    = ", FileReadDouble (FILE, DOUBLE_VALUE));
     Print("Price    = ", FileReadDouble (FILE, DOUBLE_VALUE));
     Print("Price    = ", FileReadDouble (FILE, DOUBLE_VALUE));
     Print("Price    = ", FileReadDouble (FILE, DOUBLE_VALUE));
     Print("Volume   = ", FileReadDouble (FILE, DOUBLE_VALUE));
     Print("Time    = ", FileReadInteger (FILE, LONG_VALUE));
     Print("Price    = ", FileReadDouble (FILE, DOUBLE_VALUE));
     Print("Price    = ", FileReadDouble (FILE, DOUBLE_VALUE));
     Print("Price    = ", FileReadDouble (FILE, DOUBLE_VALUE));
     Print("Price    = ", FileReadDouble (FILE, DOUBLE_VALUE));
     Print("Volume   = ", FileReadDouble (FILE, DOUBLE_VALUE));
     Print("Time    = ", FileReadInteger (FILE, LONG_VALUE));
     Print("Price    = ", FileReadDouble (FILE, DOUBLE_VALUE));
     Print("Price    = ", FileReadDouble (FILE, DOUBLE_VALUE));
     Print("Price    = ", FileReadDouble (FILE, DOUBLE_VALUE));
     Print("Price    = ", FileReadDouble (FILE, DOUBLE_VALUE));
     Print("Volume   = ", FileReadDouble (FILE, DOUBLE_VALUE));
     Print("Time    = ", FileReadInteger (FILE, LONG_VALUE));
     Print("Price    = ", FileReadDouble (FILE, DOUBLE_VALUE));
     Print("Price    = ", FileReadDouble (FILE, DOUBLE_VALUE));
     Print("Price    = ", FileReadDouble (FILE, DOUBLE_VALUE));
     Print("Price    = ", FileReadDouble (FILE, DOUBLE_VALUE));
     Print("Volume   = ", FileReadDouble (FILE, DOUBLE_VALUE));
     FileClose(FILE);   
     return(0);
    }

    Язык программирования торгового терминала MetaTrader 4 - MQL 4 - имеет C-нотацию. Многое роднит его с языком C, поэтому пример размещаю сюда.
    У меня складывается мнение, что, как и Forex - дно (днище) в мире электронной торговли, так и основная масса кода, написанного на MQL4 - образец того, как
    НЕ нужно программировать! Чего стоит одна только вырвиглазная разметка вкупе с корявым непоследовательным именованием... характерная, в том числе,
    и для официально поставляемых с терминалом примеров кода. Заранее прошу прощения за многострочный пример

    AndreySt, 02 Марта 2015

    Комментарии (31)
  2. Си / Говнокод #17712

    +137

    1. 1
    (a != b) ? a ? b = true : b = !b : b = (a == b) && a;

    refactor, 01 Марта 2015

    Комментарии (9)
  3. Си / Говнокод #17685

    +137

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    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
    #include <time.h>
    
    
    int rrand(int start, int end)
    {
    	int range=end-start+1;
    	int speed=1;
    	int base=0;
    	int rez=start;
    	if(range>200) speed=range/100;
    	while(range>=0)
    	{
    		srand(clock());
    		if(rand()%2) base=base+speed+1;
    		else base--;
    		rez=rez+base;
    		rez=(rez < start)? end-rez : rez;
    		rez=(rez > end)? (rez%end)+start : rez;
    		range=range-speed;
    	}
    	return rez;
    }

    случайные числа в определенном диапазоне...

    pl7ofit, 24 Февраля 2015

    Комментарии (12)
  4. Си / Говнокод #17682

    +136

    1. 1
    2. 2
    for (j = 0; j < NUM_DMA_BUFFERS; j++)
            *(int *)dev->channel[0].virtDma[j] = 0x1235+j;

    ЯННП

    codemonkey, 23 Февраля 2015

    Комментарии (9)
  5. Си / Говнокод #17674

    +101

    1. 1
    2. 2
    char buf[4096];
    *((char*)&buf[14]) = 0x30;

    Запись значения в массив (такой способ обращения к элементу массива тщательно соблюдается на протяжении всех 25000 строк кода проекта)

    refactor, 20 Февраля 2015

    Комментарии (39)
  6. Си / Говнокод #17658

    +141

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    /* The DNS spec is officially case-insensitive, but for those times when you
    *really* wanna see any and all discrepancies, by all means define this. */
    #ifdef ANAL
        if (strcmp (poop->name, hp->h_name) != 0) { /* case-sensitive */
    #else
        if (strcasecmp (poop->name, hp->h_name) != 0) { /* normal */
    #endif

    Из первой версии netcat'а.

    bormand, 17 Февраля 2015

    Комментарии (9)
  7. Си / Говнокод #17647

    +138

    1. 1
    2. 2
    3. 3
    if (r_ptr->flags1 & (RF1_FEMALE)) my_strcpy(desc, "себя", max);
    else if (r_ptr->flags1 & (RF1_MALE)) my_strcpy(desc, "себя", max);
    else my_strcpy(desc, "себя", max);

    Может, я чего-то не понимаю?

    CYB3R, 15 Февраля 2015

    Комментарии (8)
  8. Си / Говнокод #17643

    +140

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    GNET::ChatBroadCast::~ChatBroadCast(&cbc);
      }
      else if ( v9 > 9 && v9 == 14 )
      {
        v4 = this->roleid;

    Декомпилил тут игруху, а там такое в псевдокоде.

    DesmondHume, 14 Февраля 2015

    Комментарии (32)
  9. Си / Говнокод #17638

    +143

    1. 1
    2. 2
    3. 3
    char value[60] = {0};
    int data;
    snprintf(value, sizeof(value-1), "|%7u\n", data);

    coverity полагал что заменить sprintf на snprintf было бы безопаснее

    Yeiradohr, 13 Февраля 2015

    Комментарии (27)
  10. Си / Говнокод #17637

    +145

    1. 1
    2. 2
    char bStr[1000];
    strncpy(bStr, "  [\0", strlen("  [\0"));

    Потому что в man:
    Warning: If there is no null byte among the first n bytes of src, the string placed in dest will not be null terminated.

    Yeiradohr, 13 Февраля 2015

    Комментарии (10)