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

    +114

    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
    #include <stdio.h>
    /* Программа выводит ASCII-коды введённых символов */
    int main()
    {
        int a[255];
        int i;
        for (i = 0; i < 256; i++) {
            a[i] = i;
        }
        int c;
        while ((c = getchar()) != EOF) {
            if (c != '\n')
                printf("%d\n", a[c]);
        }
        return 0;
    }

    Запостил: vistefan, 15 Сентября 2012

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

    • Юникод версию ждать?
      Ответить
    • А при чем тут UNICODE и ASCII? Соль в другом :/
      Ответить
      • Отличное расширяемое решение. Чтобы сменить кодировку на другую, достаточно будет заполнить массив a[i] по-другому. Остальной код менять не придется.
        Ответить
    • Говно. Надо было сделать так

      char ascii[] = "\0...!\"#$%&'()*+,-./0123456789:;>=<?@ABCDEFGHIKJLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}";
      printf("%d\n", ascii[c]);
      Ответить
      • Говно. Надо было сделать так:
        ...
        a['A'] = 65;
        a['B'] = 66;
        a['C'] = 67;
        ...
        Или так:
        ...
        if (c == 'A') printf("65\n");
        if (c == 'B') printf("66\n");
        ...
        Ответить
        • a['A']=65;
          b['B']=66;
          c['C']=67
          Ответить
          • Чего не так с пробелами?

            P.S. Невнимательно читаю. Разные массивы, лол.
            Ответить
        • std::unordered_map<char, std::function<void()>> asucii=
          {
            'A', std::bind(printf, "65\n"),
            'B', std::bind(printf, "66\n"),
          ...
          };
          Ответить
    • Дык, оно вообще не взлетит, выход за пределы массива.
      Ответить
      • ну выход, но очень несмертельный
        практически уверен, что компилятору в стеке все равно пришлось окно из 256 байт выделять, чтобы следующий int разместить по границе слова
        Ответить
        • Не взлетает http://ideone.com/fyHlg в отличии от http://ideone.com/kj3hS
          Ответить
          • я поначалу начал себя ругать за невнимательность - в оригинале массив то int, а не char, виноват, поэтому без вариантов нечего портить чужое в стеке
            но переделал с char - тот же результат, удивился

            компиляторы стали очень умные
            в g++ включен по умолчанию -fstack-protector
            для сравнения выхлопы: http://bit.ly/U0RhMo и http://bit.ly/Qe4Jr5
            в студии есть похожие флаги, да
            Ответить
            • Я, как ОП, собирал это под виндой MinGW, и даже ничего не подозревал о том, что у кого-то может не взлететь. УМВР.
              Ответить
              • GCC Stack-Smashing Protector (ProPolice)
                It was implemented as a patch to GCC 3.x; a less intrusive reimplementation is included in the GCC 4.1 release. Currently, SSP is standard in OpenBSD, FreeBSD (since 8.0), Ubuntu (since 6.10 [10]), Hardened Gentoo (in gcc 4.x by default since October 2010, previously also in gcc 3.x) and DragonFly BSD. It is also available in NetBSD (enabled by default on x86), Debian and Gentoo, disabled by default.
                так что флаг может быть просто выключен по умолчанию, либо гцц внутри более старый, чем 4.1
                Ответить
        • Я ещё сначала подумал на знаковый char, потом специально прочитал, что таки беззнаковый, то есть гарантия 0..255 есть.
          Ответить
          • > знаковый char
            никогда не понимал, как символ (точнее, его код) может быть отрицательным
            Ответить
            • А ведь здесь можно найти расизм - кириллическим буквам достались отрицательные величины...
              Ответить
              • Скорее уж не кириллическим, а "не латинским".
                Ответить
            • Это сишка, в ней всё сделано непонятным, чтобы школьники думали, что "раз непонятно - значит, близко к железу".
              Ответить
              • Ну беззнаковый чар то ближе к железу.
                Ответить
                • Одинаково близки ващето, если уж говорить серьёзно со всякими омскими, не понимающими сарказм.
                  Ответить
                  • А я ведь даже плюсанул Тараса за сарказм...
                    А в крестах школьники думают, что "раз непонятно - значит код ниибаца высокого уровня".
                    Ответить
      • Это просто чел забыл, что эл-т с индексом 10 не нужен.
        Ответить
    • > while ((c = getchar()) != EOF) {
      Интересно, автор сможет корректно выйти из этой программы? (Ctrl-Z нужно нажать, кажется...)
      Ответить
      • Семь бед - один reset.
        Ответить
      • В винде вроде ctrl-z, в линухе ctrl-d.
        Ответить
        • ctrl+c
          Ответить
          • Это не совсем корректный выход ;)
            Ответить
            • Угу, я почему-то подумал речь идет о ресете, а не о EOF (комментарий ниже eof) :). Так то да
              Ответить
              • Еще, в большинстве случаев, можно терминал по крестику закрыть ;)

                P.S. За что @lilfox'a минусуете? Ну промахнулся человек, отправил коммент не к тому комментарию, с кем не бывает.
                Ответить
    • похоже на то что я на *нихе давно делаю через `cat|xxd`.

      не знаю зачем на виндах (тем более в виндозной консоли), но во всяких кривых *нихах помогает находить коды кнопок на клаве.
      Ответить
    • Я требую продолжения! Второй проги, её исходника! Выпускай новую версию, автор!
      Ответить
    • показать все, что скрытоCeltics president of basketball operations Danny Ainge and Green's agent <a href="http://www.coachoutletonlineua.net/">Coach Outlet Online</a> David Falk, maintained during the lengthy delay that the deal eventually would get done <h1><a href="http://www.coachfactoryoutletfa.net/">Coach Factory Online</a></h1> but wouldn't shed light on what was holding up the process <h1><a href="http://www.coachoutleshome.com/"title="Coach Outlet">Coach Outlet</a></h1> More on the CelticsKeep on top of the Green throughout the offseason with ESPNBoston. <a href="http://www.coachoutleshome.com/"title="Coach Outlet">Coach Outlet</a> The Legends have posted records of 24-26 in both of their D-League seasons to date [url=http://www.coachoutletonlineua.net/]Coach Outlet Online[/url] while also serving as a consultant to Mavericks owner Mark Cuban after a seven-year run in Dallas http://www.coachoutleshome.com
      Ответить
    • <H1><a href="http://www.louis-vuitton-handbags.name" title="www.louisvuitton.com"><strong>www .louisvuitton.com</strong></a></H1>
      <H1><a href="http://www.michaelkors--outlet.us.com" title="michael kors uk"><strong>michael kors uk</strong></a></H1>
      <H1><a href="http://www.coach--factory--outlet.com" title="coach factory outlet online"><strong>coach factory outlet online</strong></a></H1>
      <H1><a href="http://www.true-religion-outlet.us" title="true religion"><strong>true religion</strong></a></H1>
      <H1><a href="http://www.jordanshoes.us.com" title="air jordan 11"><strong>air jordan 11</strong></a></H1>
      <a href="http://www.michael-korsoutlets.us.com"><strong>michael kors outlet online</strong></a>
      <a href="http://www.coach--factory--outlet.com"><strong>coach outlet store online</strong></a>
      <a href="http://www.louis-vuitton-handbags.cc"><strong>travel bags</strong></a>
      <a href="http://www.michaelkorsoutlet-handbags.us"><strong>michael kors outlet</strong></a>
      <a href="http://www.chanelsoutletonline.com"><strong>cha nel watches</strong></a>
      [url=http://www.officialcoachoutletfactory.us]coach factory outlet[/url]
      [url=http://www.michael-korsoutlets.us.com]michael kors[/url]
      [url=http://www.fakeoakleyssunglasses.org]Oakley Sunglasses Wholesale[/url]
      [url=http://www.coach--factory--outlet.com]coach factory outlet online[/url]
      [url=http://www.louis--vuitton.us]louis vuitton uk[/url]
      http://www.jordanshoes.us.com/
      http://www.rayban-sunglasses.name/
      Ответить
      • По какому принципы они посты выбирают? И ведь срут только в выбранных постах, какие чистоплотные.
        Ответить

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