- 1
int c = ((i-(i%(int)pow(10,p)))/(int)pow(10,p))%10;
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+105
int c = ((i-(i%(int)pow(10,p)))/(int)pow(10,p))%10;
Выделение из числа I цифры, стоящей на месте P с конца.
=>
i = 1234, p = 2, c => 2
+127
[code=Си]
switch(n)
case 1:
{
/* code1 */
/* fallthrough */
case 2:
/* code 2 */
}
[/code]
Все имена и явки изменены!
Сцуко, работает. Щас в стандарт полезу, интересно же! Обвиняют меня, я киваю на издержки мержа. Но смешно.
+132
if (argc == 3)
snprintf(outfile, sizeof(outfile) - 1, "scan.log", argv[1], argv[2]);
else if (argc >= 4)
{
snprintf(outfile, sizeof(outfile) - 1, "scan.log", argv[1], argv[3], argv[2]);
// ...
}
Какой-то иксплойт, файл pscan2.c
+138
int ftp_list (int sck, int verbose) {
/* ... */
list = fopen("LIST.txt", "w");
if (list == NULL) {
printf("Unable to open LIST file..\n");
free(buffer);
return -1;
}
/* ... */
}
Функция получения списка файлов в директории с FTP-сервера.
http://sourceforge.net/projects/libftp/
+140
printf("0x%02X", (int)( (((block[i << 1] >> ((15 - (j >> 4)) << 2)) & 15) << 4 ) | ((block[(i << 1) | 1] >> ((15 - (j & 15)) << 2)) & 15)));
Жертва жестокой оптимизации. При всем этом код исправно делал свое дело... пока не пришла пора в нем что-то изменить =)
+125
#line 411 "ext/standard/var_unserializer.c"
{
YYCTYPE yych;
if ((YYLIMIT - YYCURSOR) < 7) YYFILL(7);
yych = *YYCURSOR;
switch (yych) {
case 'C':
case 'O': goto yy13;
case 'N': goto yy5;
case 'R': goto yy2;
case 'S': goto yy10;
case 'a': goto yy11;
case 'b': goto yy6;
case 'd': goto yy8;
case 'i': goto yy7;
case 'o': goto yy12;
case 'r': goto yy4;
case 's': goto yy9;
case '}': goto yy14;
default: goto yy16;
}
yy2:
yych = *(YYMARKER = ++YYCURSOR);
switch (yych) {
case ':': goto yy95;
default: goto yy3;
}
yy3:
#line 733 "ext/standard/var_unserializer.re"
{ return 0; }
#line 442 "ext/standard/var_unserializer.c"
yy4:
yych = *(YYMARKER = ++YYCURSOR);
switch (yych) {
case ':': goto yy89;
default: goto yy3;
}
yy5:
yych = *++YYCURSOR;
switch (yych) {
case ';': goto yy87;
default: goto yy3;
}
yy6:
yych = *(YYMARKER = ++YYCURSOR);
switch (yych) {
case ':': goto yy83;
default: goto yy3;
}
yy7:
yych = *(YYMARKER = ++YYCURSOR);
switch (yych) {
case ':': goto yy77;
default: goto yy3;
}
yy8:
yych = *(YYMARKER = ++YYCURSOR);
switch (yych) {
case ':': goto yy53;
default: goto yy3;
}
yy9:
yych = *(YYMARKER = ++YYCURSOR);
switch (yych) {
case ':': goto yy46;
default: goto yy3;
}
yy10:
yych = *(YYMARKER = ++YYCURSOR);
switch (yych) {
case ':': goto yy39;
default: goto yy3;
}
yy11:
yych = *(YYMARKER = ++YYCURSOR);
switch (yych) {
case ':': goto yy32;
default: goto yy3;
}
yy12:
yych = *(YYMARKER = ++YYCURSOR);
switch (yych) {
case ':': goto yy25;
default: goto yy3;
}
yy13:
yych = *(YYMARKER = ++YYCURSOR);
switch (yych) {
case ':': goto yy17;
default: goto yy3;
}
yy14:
++YYCURSOR;
/* далее еще несколько похожих кусков кода чуть менее хардкорных */
http://svn.php.net/viewvc/php/php-src/trunk/ext/standard/var_unserializer.c?view=markup
Исходники функции unserialize в php, не зря она так медленно работает на больших массивах...
+135
//глубоко в коде
char output[1024];
//еще глубже
struct sockaddr_in outputa;
//...
if(sendto(s, output, 512, 0, (struct sockaddr *) &output, rsize) == SOCKET_ERROR) {
printf("Socket error: %i.\n", WSAGetLastError());
}
Долго-же я думал, почему оно вываливается с ошибкой 10047.
+142
#include <unistd.h>
#include <stdlib.h>
int main(int argc,char* argv[])
{
int fdp1[2],fdp2[2],fdp3[2],fdp4[2],fdp5[2];
pipe(fdp1);
pipe(fdp2);
pipe(fdp3);
pipe(fdp4);
pipe(fdp5);
if(fork()==0){
close(1);dup(fdp1[1]);close(fdp1[1]);close(fdp1[0]);
execl("/bin/cat","cat",argv[1],(char*)0);
exit(1);
}
if(fork()==0){
close(0);dup(fdp1[0]);close(fdp1[0]);close(fdp1[1]);
close(1);dup(fdp2[1]);close(fdp2[1]);
execl("/usr/bin/tr","tr","-cs","A-Za-z","\n",(char*)0);
exit(2);
}
if(fork()==0){
close(0);dup(fdp2[0]);close(fdp2[0]);close(fdp2[1]);
close(fdp1[0]);close(fdp1[1]);
close(1);dup(fdp3[1]);close(fdp3[1]);close(fdp3[0]);
execl("/usr/bin/sort","sort",(char*)0);
exit(3);
}
if(fork()==0){
close(0);dup(fdp3[0]);close(fdp3[0]);close(fdp3[1]);
close(fdp1[0]);close(fdp1[1]);
close(fdp2[0]);close(fdp2[1]);
close(1);dup(fdp4[1]);close(fdp4[1]);
execl("/usr/bin/uniq","uniq","-c",(char*)0);
exit(4);
}
if(fork()==0){
close(0);dup(fdp4[0]);close(fdp4[0]);close(fdp4[1]);
close(fdp1[0]);close(fdp1[1]);
close(fdp2[0]);close(fdp2[1]);
close(fdp3[0]);close(fdp3[1]);
close(1);dup(fdp5[1]);close(fdp5[1]);
execl("/usr/bin/sort","sort","-n",(char*)0);
exit(5);
}
if(fork()==0){
close(0);dup(fdp5[0]);close(fdp5[0]);close(fdp5[1]);
close(fdp1[0]);close(fdp1[1]);
close(fdp2[0]);close(fdp2[1]);
close(fdp3[0]);close(fdp3[1]);
close(fdp4[0]);close(fdp4[1]);
execl("/usr/bin/tail","tail","-n",argv[2],(char*)0);
exit(6);
}
close(fdp1[0]);close(fdp1[1]);
close(fdp2[0]);close(fdp2[1]);
close(fdp3[0]);close(fdp3[1]);
close(fdp4[0]);close(fdp4[1]);
close(fdp5[0]);close(fdp5[1]);
while(wait(0)!=(-1));
exit(0);
}
задача: подсчет повторяемости слов, и вывод слов указанной длины.
+138
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <ctime>
#include <signal.h>
#include <sys/time.h>
#include <fcntl.h>
#include <termios.h>
#include <time.h>
#include <iostream>
using namespace std;
struct termios savetty;
struct termios tty;
char num[]="0123456789QWERTYUIOPASDFGHJKLZXCVBNM";
char let[]="!\",#$%&'()*qwertyuiopasdfghjklzxcvbnm";
int t=1;
int tm=0;
int opnum=0;
char buffer[30];
char var[1000];
char out[1000];
struct timeval tv;
struct timeval tv2;
int main()
{
if ( !isatty(0) ) {
fprintf (stderr, "stdin not terminal\n");
exit (1);
};
tcgetattr (0, &tty);
savetty = tty;
tty.c_lflag &= ~(ICANON|ISIG);
tty.c_cc[VMIN] = 1;
tcsetattr (0, TCSAFLUSH, &tty);
srand(time(0));
int i=0;
bool c=true;
time_t curtime;
int passLen=200+rand()%400;
for(int i=0;i<=passLen;i++){
int s=rand()%2;
if(s==1){
out[i]=let[rand()%37];
} else {
out[i]=num[rand()%35];
};
if((i%5)==0 && i!=0)out[i]=' ';
};
out[passLen]='\0';
int tt=gettimeofday(&tv, NULL);
if(tt<0)exit(0);
printf("%s\n",out);
while(out[i]!='\0')
{
var[i]=getchar();
if(var[i]!=out[i]){
opnum++;
printf("Er%c",out[i]);
};
i++;
};
tt=gettimeofday(&tv2, NULL);
if(tt<0)exit(0);
int tm=tv2.tv_sec-tv.tv_sec;
int v=(passLen*60)/tm;
int min=tm/60;
tm%=60;
printf("Time %d min %d sec\n",min,tm);
cout<<"Num of errors "<<opnum<<" Speed "<<v<<endl;
tcsetattr (0, TCSAFLUSH, &savetty);
};
Клавиатурный тренажер
+109
while(1) {
:cycle
goto cycleCode;
}
// ...
:cycleCode
//код
goto cycle;