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

    +139

    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
    #include "stdio.h"
    #include "string.h"
    int main (int argc, char *argv[])
    {
    	FILE * f1= fopen("новый файл","r");
    	char a[3];
    	char * b= &a[0];
    	int i=0;
    	for (i = 0; i < 80; i ++)
    	{
    		char a1[400]="java -jar TextCode.jar ";
    		char a2[40]="/home/dan/Education/Subj/MFCIT/roz/";
    		fscanf(f1,"%s",b);
    		strcat(a1,a2);
    		strcat(a1,b);
    		strcat(a1,"/");
    		strcat(a1,b);
    		strcat(a1," ");
    		strcat(a1,a2);
    		strcat(a1,b);
    		strcat(a1,"/");
    		strcat(a1,b);
    		strcat(a1,".c ");
    		strcat(a1,a2);
    		strcat(a1,b);
    		strcat(a1,"/");
    		strcat(a1,b);
    		strcat(a1,".cod");
    		system(a1);
    	}
    	return 0;
    }

    Шифрует тексты при помощи проги на Java

    Запостил: Abbath, 12 Января 2012

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

    • Пиздец, такого я еще не видел.
      Ответить
    • Манипуляции с использованием strcat напомнили игру в напёрстки.
      Ответить
    • > Шифрует тексты
      Шифрователь уровня /gk/
      Ответить
    • и очевидно, в "новом файле" всегда записаны слова длиной меньше 3
      Ответить
      • 80 раз
        Ответить
        • на самом деле в файле имена файлов для шифрования
          Ответить
          • Если в файле "имена файлов для шифрования", то почему аффтар считал, что эти имена файлов поместятся в массив из 3-х символов (длиня имени файла ограничена 2). Что, действительно такие короткие имена?
            Ответить
    • Это второй этап эволюции чайника.

      На первом этапе чайник считает, что массивы в С являются "просто указателями" и горя не знает. Потом кто-то ему объясняет (или жизнь намекает), что массивы в С указателями совсем не являются. И наговаривает еще кучу умных вещей, которых чайник полностью не понимает. В результате наступает второй этап эволюции чайника.

      На втором этапе чайник считает, что массивы в С НЕ являются указателями и старательно избегает их использования в указательном контексте. Вот и в данном случае мы наблюдаем
      char a[3];
      char *b = &a[0]; /* заметьте: даже не 'char *b = a', а именно 'char *b = &a[0]' ! */
      ...
      fscanf(f1, "%s", b);

      вместо
      char a[3];
      ...
      fscanf(f1, "%s", a);
      Ответить
      • Автор сам недоумевает с этих строк и ищет подобное в своем тогдашнем коде
        Ответить
      • Каков третий этап этой мелодраммы? Чайник в конце узнаёт, что массивы отличаются от обычных указателей только тем, что указывают на один участок памяти, т.е. нельзя написать a++?
        Ответить
        • Нет. Массивы никуда не "указывают". Массив - это непрерывный блок памяти размера 'n * sizeof(T)'. А указатель - это просто указатель,. Размер указателя фиксирован и определяется платформой.

          Третий этап этой мелодрамы наступает тогда, когда чайник перестает быть чайнком, т.е. в конце концов, кроме прочего, понимает и то, что в языке С массив не является и никогда не являлся указателем, а просто ведет себя как указатель в ряде предопределенных ситуаций (в т.наз. value-контекстах). В тоже время массив ведет себя как массив (не указатель) типа в остальных ситуациях (в т.наз. object-контекстах).

          "Ведет себя" в вышесказанно означает, что "указатель", которым он когда-то считал массив, является не более чем эфемерным результатом неявного преобразования типов: т.наз. array-to-pointer conversion.
          Ответить
          • Массив в сях это такой пиздец, что если его просто передать по значению, то передастся только указатель, а если его закатать в структуру и передать структру по значению, то вся структура скопируется на стек.
            Ответить
      • Няшапроблемы
        Ответить
    • Классический пример про маляра Шмелиэля
      Ответить
      • дайте ссылку на анекдот
        Ответить
      • что за зверь этот маляр?
        Ответить
        • Маляр Шлемиэль подрядился красить пунктирные осевые линии на дорогах. В первый день он получил банку краски, поставил её на дорогу, и к концу дня покрасил 300 метров осевой линии. "Отлично!" сказал прораб, "быстро работаешь!" -- и заплатил ему копейку.

          На следующий день Шлемиэль покрасил 150 метров. "Мда, это, конечно, не так здорово, как вчера, но приемлемо." -- сказал прораб и заплатил ему копейку.

          На следующий день Шлемиэль покрасил 30 метров. "Всего лишь 30!" заорал прораб. "Это никуда не годится! В первый день было в десять раз больше! В чём дело?"

          "Ничего не могу поделать," -- говорит Шлемиэль. "Каждый день я ухожу всё дальше и дальше от банки!"
          Ответить
      • Хм, я думал, что он - Шлемель и немец, а он оказывается из наших.
        Ответить
    • "новый файл" , "г"
      Ответить

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