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

    +104.7

    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
    /*==================================================================================*/
    /* Преобразование целого числа в ASCII												*/
    /*==================================================================================*/
    unsigned char IntToStr (unsigned long Value,unsigned char *pBuf,unsigned char n,unsigned char Zeros)
    {
    // Локальные переменные
    	unsigned char 	j = 0;
    	unsigned long 	dec;
    	uldiv_t			Tmp;
    // Программа
    // Перевод ASCII в значение
    	while (n--)
    	{
    		switch(n)
    		{
    			case 0:
    				dec = 1;
    			break;
    			case 1:
    				dec = 10;
    			break;
    			case 2:
    				dec = 100;
    			break;
    			case 3:
    				dec = 1000;
    			break;
    			case 4:
    				dec = 10000;
    			break;
    			case 5:
    				dec = 100000;
    			break;
    			case 6:
    				dec = 1000000;
    			break;
    			case 7:
    				dec = 10000000;
    			break;
    			case 8:
    				dec = 100000000;
    			break;
    			case 9:
    				dec = 1000000000;
    		}
    		Tmp = uldiv(Value,dec);
    	// Остаток
    		Value = Tmp.rem;
    	// Ограничение
    		if (Tmp.quot > 9)
    			Tmp.quot = 9;
    	// Проверка целой части
    		if (Zeros || j || Tmp.quot || (dec == 1))
    			*(pBuf + j++) = Hex_Table[Tmp.quot];
    	}
    	*(pBuf + j) = '\0';
    	return j;
    }

    без комментариев.

    Запостил: angry C nerd, 10 Марта 2010

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

    • Это С++.
      Ответить
      • Но говнокод, тем не менее, хороший, годный (:
        Ответить
      • Откуда такая информация?
        Ответить
        • Смотри на вызов функции uldiv.
          Чистые си не дадут вернуть структуру, только указатель.
          Ответить
          • Ну тогда: Где здесь Си?
            Ответить
            • Кэп какбе намекает что код - в разделе Си (:
              Ответить
          • есть такое заблуждение, да =)
            http://www.lysator.liu.se/c/c-faq/c-9.html#9-2
            Ответить
            • Херассе.
              Нас обманывали!!!
              бгг
              Ответить
              • хотя и разрешили, всё равно я этому делу недоверяю. и вообще глупость это сиплюблядская, лишние копирования в стек а потом снова из стека.

                возврат через указатель круче - заполнение данных идёт сразу.

                не слушай их, олдскул решае
                Ответить
                • Ну, между нами - я вообще никогда не возвращаю указатель.
                  Я всегда возвращаю int (причем -1 при ошибке, типа как в стандартных libc-функциях).
                  Ответить
                  • ну и лох. То-то я думаю, что твои проги не пашут... :P
                    Ответить
                  • Давно пора бросать исключения.
                    Ответить
                    • Ага, в си.
                      Вообще оверхед большой, мне не подходит.
                      Ответить

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