- 1
- 2
- 3
- 4
string buf;
...
char c_buf[MAX_LEN];
strncpy(c_buf, buf.c_str(), MAX_LEN);
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+144
string buf;
...
char c_buf[MAX_LEN];
strncpy(c_buf, buf.c_str(), MAX_LEN);
в чём ошибка?
+116
struct Epica
{
public:
signed int Value;
};
//...
Epica* ValEp[10][17];
//...
ValEp[i][jj][0].Value;
Угадайте, что с автором?
+98
template<unsigned AxesQount, class Conten>
const Vector<AxesQount, Conten> Vector<AxesQount, Conten>::operator-(void) const
{
return *this*-1.0;
};
template<unsigned AxesQount, class Conten>
const Vector<AxesQount, Conten> Vector<AxesQount, Conten>::operator+(void) const
{
return *this;
};
Чужой велосипед. Пытался использовать в своём проекте, но передумал.
+100
int wmain()
{
_rmCfg rmCfg;
double tt;
int i;
String *filePath=S"C:\\rm\\rm.cfg";
String * sqlstr;
rmCfg.isread=0;
String * dir[];
DateTime dt;
if (File::Exists(filePath))
{
StreamReader *sr= new StreamReader(filePath);
rmCfg.gosanPath=sr->ReadLine();
rmCfg.iakServer=sr->ReadLine();
rmCfg.iakUser=sr->ReadLine();
rmCfg.iakPassword=sr->ReadLine();
rmCfg.trackId=sr->ReadLine()->ToInt32(0);
// rmCfg.trName=sr->ReadLine();
Console::WriteLine(S"Viewing directory: ");
Console::Write(rmCfg.gosanPath);
Console::WriteLine();
Писано было на втором фреймворке. Так бы и продолжал писать, если бы товарищ не намекнул про сериализацию.
+103
#include <iostream>
#include <string>
#include <boost/foreach.hpp>
int main(int argc, char* argv[]) {
std::string str = "Boost FOREACH!";
char ch;
if (boost::foreach_detail_::auto_any_t _foreach_col11 = boost::foreach_detail_::contain( ( str ) , (true ? 0 : boost::foreach_detail_::or_( boost::foreach_detail_::and_( boost::foreach_detail_::not_(boost::foreach_detail_::is_array_( str )) , (true ? 0 : boost::foreach_detail_::is_rvalue_( (true ? boost::foreach_detail_::make_probe( str ) : ( str )), 0))) , boost::foreach_detail_::and_( boost::foreach_detail_::not_( boost_foreach_is_noncopyable( boost::foreach_detail_::to_ptr( str ) , boost_foreach_argument_dependent_lookup_hack_value) ) , boost_foreach_is_lightweight_proxy( boost::foreach_detail_::to_ptr( str ) , boost_foreach_argument_dependent_lookup_hack_value)) )) ) ) {} else if (boost::foreach_detail_::auto_any_t _foreach_cur11 = boost::foreach_detail_::begin( _foreach_col11 , (true ? 0 : boost::foreach_detail_::encode_type( str , boost::foreach_detail_::is_const_( str ))) , (true ? 0 : boost::foreach_detail_::or_( boost::foreach_detail_::and_( boost::foreach_detail_::not_(boost::foreach_detail_::is_array_( str )) , (true ? 0 : boost::foreach_detail_::is_rvalue_( (true ? boost::foreach_detail_::make_probe( str ) : ( str )), 0))) , boost::foreach_detail_::and_( boost::foreach_detail_::not_( boost_foreach_is_noncopyable( boost::foreach_detail_::to_ptr( str ) , boost_foreach_argument_dependent_lookup_hack_value) ) , boost_foreach_is_lightweight_proxy( boost::foreach_detail_::to_ptr( str ) , boost_foreach_argument_dependent_lookup_hack_value)) )) ) ) {} else if (boost::foreach_detail_::auto_any_t _foreach_end11 = boost::foreach_detail_::end( _foreach_col11 , (true ? 0 : boost::foreach_detail_::encode_type( str , boost::foreach_detail_::is_const_( str ))) , (true ? 0 : boost::foreach_detail_::or_( boost::foreach_detail_::and_( boost::foreach_detail_::not_(boost::foreach_detail_::is_array_( str )) , (true ? 0 : boost::foreach_detail_::is_rvalue_( (true ? boost::foreach_detail_::make_probe( str ) : ( str )), 0))) , boost::foreach_detail_::and_( boost::foreach_detail_::not_( boost_foreach_is_noncopyable( boost::foreach_detail_::to_ptr( str ) , boost_foreach_argument_dependent_lookup_hack_value) ) , boost_foreach_is_lightweight_proxy( boost::foreach_detail_::to_ptr( str ) , boost_foreach_argument_dependent_lookup_hack_value)) )) ) ) {} else for (bool _foreach_continue11 = true; _foreach_continue11 && ! boost::foreach_detail_::done( _foreach_cur11 , _foreach_end11 , (true ? 0 : boost::foreach_detail_::encode_type( str , boost::foreach_detail_::is_const_( str ))) ) ; _foreach_continue11 ? boost::foreach_detail_::next( _foreach_cur11 , (true ? 0 : boost::foreach_detail_::encode_type( str , boost::foreach_detail_::is_const_( str ))) ) : (void)0) if (boost::foreach_detail_::set_false( _foreach_continue11 )) {} else for ( ch = boost::foreach_detail_::deref( _foreach_cur11 , (true ? 0 : boost::foreach_detail_::encode_type( str , boost::foreach_detail_::is_const_( str ))) ) ; ! _foreach_continue11 ; _foreach_continue11 = true) {
std::cout << ch;
}
std::cout << std::endl;
return 0;
}
Конечно, это не совсем говнокод, но... я офигел когда посмотрел во что превращается простой BOOST_FOREACH
+89
void __fastcall TForm1::FormPaint(TObject *Sender)
{
for(int i=0;i<2;i++)
{
if(!White[i].Moves)
{
int j=0;
for(int k=0;k<i;k++)
{
if(White[k].Position == White[i].Position)
{
j++;
}
}
Image1->Canvas->MoveTo(Points[White[i].Position-1].X-20,Points[White[i].Position-1].Y - 30*j);
Image1->Canvas->LineTo(Points[White[i].Position-1].X+20,Points[White[i].Position-1].Y - 30*j);
}
}
//Image1->Canvas->LineTo(200,200);
}
Этот обработчик грузит проц. на 50 процентов и таймер не работает из-за него.
Писал мой знакомый, который не любит продукты от борланда.
В чем дерьмо? Думаю видно невооруженным глазом.
+73
ICQ::logInIcq( )
{
TLV clid1,clid,clm,clmin,clless,clbild,cldistr,cllang,clcontr,t1;
WSA ws;
int packn;
unsigned char st1[40];
port=ControlIcqPropert.portIcqServer;
host=(char*)ControlIcqPropert.IcqServer;
if((strlen(host)==0)|(port==0))
{
port=DEFAULT_SERVER_PORT;
host=DEFAULT_SERVER_HOST;
}
if(strlen(password)<3) return 0;
pn=sock.Connect( host,port );
packn=sock.Receive( ( char * )uc,sizeof( uc ),0,0 );
if( packn <= 0 ){return 1;}
//SetIndic(10);
tUin.type=0x0100;
tUin.lenght[0]=0x00;//htons( ( BYTE )strlen( uin ) );
tUin.lenght[1]=strlen(uin);
memcpy( tUin.data,uin,strlen( uin ) );
flap.chan_id=0x01;
flap.Sequence+=0x0100;
flap.datalenght[0]=0x00;
flap.datalenght[1]=0x04;
flap.data[0]=0x00;
flap.data[1]=0x00;
flap.data[2]=0x00;
flap.data[3]=0x01;
packn=sock.Send( ( const char * )&flap,10,0 );
flap.Sequence+=0x0100;
flap.chan_id=0x02;
t1.type=0x1700;
t1.lenght[0]=0x00;
t1.lenght[1]=0x06;
t1.data[0]=0x00;
t1.data[1]=0x00;
t1.data[2]=0x00;
t1.data[3]=0x00;
t1.data[4]=0x00;
t1.data[5]=0x00;
int lnum=0;
lnum+=10;
memcpy( &st1,&t1,lnum );
memcpy( &st1[lnum],&tUin,strlen(uin)+4 );
lnum+=strlen(uin)+4;
unsigned char u1[4];
u1[0]=0x00;
u1[1]=0x4B;
u1[2]=0x00;
u1[3]=0x00;
memcpy( &st1[lnum],&u1,4 );
lnum+=4;
memcpy( flap.data,&st1,lnum );
flap.datalenght[0]=0x00;
flap.datalenght[1]=0x1B;
lnum+=6;
packn=sock.Send( ( char * )&flap,lnum,0 );
//memcpy( &flap,NULL,4096 );
packn=sock.Receive( ( char * )&inflap,sizeof( inflap ),0 );
memcpy( &uc,&inflap,packn );
memcpy( &snac,&uc[6],packn-6 );
memcpy( key,&snac.data[2],snac.data[1] );
int ii;
MD5_CTX Md5Ctx;
HASH hash;
MD5Init ( &Md5Ctx );
MD5Update( &Md5Ctx, ( unsigned char* )password, strlen( password ) );
MD5Final ( ( uchar* )hash, &Md5Ctx );
MD5Init ( &Md5Ctx );
MD5Update( &Md5Ctx, ( unsigned char* )key, snac.data[1] );
MD5Update( &Md5Ctx, ( unsigned char* )hash, 16 );
MD5Update( &Md5Ctx, ( unsigned char* )AIM_MD5_STRING, strlen( AIM_MD5_STRING ) );
MD5Final ( ( uchar* )hash, &Md5Ctx );
flap.chan_id=0x02;
flap.Sequence+=0x0100;
flap.datalenght[0]=0x00;
flap.datalenght[1]=0x72;
t1.lenght[0]=0x00; //Not Lenght!!! it is SNAC!!!
t1.lenght[1]=0x02;
memcpy( uc,&t1,10 );
memcpy( &uc[10],&tUin,13 );
TLV auth_h;
auth_h.type=0x2500;
auth_h.lenght[0]=0x00;
auth_h.lenght[1]=0x10;
memcpy( &auth_h.data,&hash,16 );
memcpy( &uc[23],&auth_h,20 );
uc[43]=0x00;
uc[44]=0x4c;
uc[45]=0x00;
uc[46]=0x00;
clid1.type=0x0300;
Много лет назад, будучи молодым программером писал абсолютное гавно. Была поставлена задача реализовать протокол оскар 11 в одной бухгалтерской системе. Полное отсутствие архитектуры приложения, бизнес-слоя. В общем мне тогда сказали что так писать не надо и с треском выгнали. После этого так перестал писать :-)
+87
float Chislo(char *a, int i)
{
int j=i;
int k=0;
int r;
float chis=0;
while (a[j-1]!=' ' && a[j-1]!='>' && a[j-1]!='-' && a[j-1]!='+' && a[j-1]!='(')
{j--;
//тут перегоняем символ a[j] в цифру r
if (int(a[j]==48)) r=0;
else if (int(a[j]==49)) r=1;
else if (int(a[j]==50)) r=2;
else if (int(a[j]==51)) r=3;
else if (int(a[j]==52)) r=4;
else if (int(a[j]==53)) r=5;
else if (int(a[j]==54)) r=6;
else if (int(a[j]==55)) r=7;
else if (int(a[j]==56)) r=8;
else if (int(a[j]==57)) r=9;
else goto lab8;
//ShowMessage(a[j]);
chis=chis + r*pow(10,k);
k++;
};
//j--; //дальше надо обратно до точки и дольше до пробела
while (a[j]!='.')
{if (a[j]==' ' || a[j]==':') goto lab8;
j++;
};
j++;
r=0;
k=-1;
k--;
j++;
};
lab8:
return chis;
}
// была еще и похощая функция возвращающая результат в виде AnsiString
// вот сколько переменных понадобивлось автору в более чем 700-строчной процедуре
void Progon()
{
//
AnsiString TempR1, TempR2, TempR3, Com,Sport,Team1,Team2, Team, URL1, URL2, page,Champ,Date;
AnsiString day, month, year, Res, temp, otdyh1, otdyh2;
int dat;
//TempR1 = NMHTTP1->Body;
float tot,TM,TB,bol1,bol2,srbol,ver,value,proc;
AnsiString totS,f1S,ind1S,ind2S, f1ch1S, t_ch1S, f1ch2S, t_ch2S, f1ch3S, t_ch3S, f1ch4S, t_ch4S;
float fora1,ind1,ind2, f1ch1, t_ch1, f1ch2, t_ch2, f1ch3, t_ch3, f1ch4, t_ch4;
AnsiString Score1, Score2, s1ch1S, s2ch1S, s1ch2S, s2ch2S, s1ch3S, s2ch3S, s1ch4S, s2ch4S;
AnsiString FIO, ScoreS, RebS, AstS, MinS, Amplua, BlkS, StlS;
AnsiString TotalS, RebBookS, AstBookS, StlBookS, BlkBookS;
float Total, RebBook, AstBook, BlkBook, StlBook;
float PtssNRebsBook, PtssNAstsBook, RebsNAstsBook, PtssNRebsNAstsBook, Book3ptTeam1, Book3ptTeam2;
int Score, count;
int str1, str2, ind, indd, ig_pos;
bool win;
// В коде куча такого
while (bukva2[i2]!='/') i2++;
i2++;
while (bukva2[i2]!='/') i2++;
i2++;
while (bukva2[i2]!='/') i2++; // // обошли stl
int *Ptss;
Ptss = new int[count];
int *Rebs;
Rebs = new int[count];
int *Asts;
Asts = new int[count];
int *Blks;
while ( ! ( ((bukva[i]=='H') &&(bukva[i+1]=='o') && (bukva[i+2]=='m') && (bukva[i+3]=='e')) || ((bukva[i]=='R') &&(bukva[i+1]=='o') && (bukva[i+2]=='a') && (bukva[i+3]=='d')))) i--;
while (bukva[i]!='a') i--;
while ((bukva[i-1]!='>') && (bukva[i-1]!=' ')) i--;
// Внутри циклов всюду работа с экселем
else
{Form1->App.OlePropertyGet("ActiveSheet").OlePropertyGet("Cells", str1, str2+14).OlePropertyGet("Font").OlePropertySet("Color", -16777216);
Form1->App.OlePropertyGet("ActiveSheet").OlePropertyGet("Cells", str1, str2+15).OlePropertyGet("Font").OlePropertySet("Color", -16777216);
};
Как -то по фрилансу заказчик хотел доработать то ли парсер, то ли еще что-то (по предоставленным исходникам я так и не смог понять что это за прога, названная "Автониггер" и написанная каким -то студентом толи специально ради выноса мозгов, то ли по еще каким-то причинам вышеобозначенными выкладками, которые вполне возможно содержат в себе какойто гипнотический смысл).
+924
// придерживаюсь оригинала как могу
// код как был:
static char message_buf[64000]; // must be actually 64K == 64<<10 == 65536
class MessageHandler {
// [...]
char *header; // point into the message_buf
char *content;
std::list<char *> tlvs; // pointers to the elements of the message
};
// я пожаловался - пообещали исправить в новой версии по ходу реализации новой фичи.
// новый "усовершенствованый" код, с "поддержкой" многопоточности.
static char message_buf[100][65000]; // 100 == max threads, buffer size now is much closer to the standard
class MessageHandler {
// [...]
int threadId; // index into the new message_buf[]
char *header; // point into the message_buf[threadId]
char *content;
std::vector<char *> tlvs; // same, but in std::vector because it is "faster"
};
вот так кодируют и совершенствуют код матерые шведские программистки.
самое обидное что мой коллега почти все это пофиксил в оригинальной версии, но из-за важной фичи отказались мержить с новой версией и выкинули почти все его изменения.
+911
case UP : o > 0 ? o-- : o = FIELD_SIZE - 1; break;
Друг скинул в аську, попросил перевести в if-ную форму)))
Не знаю где он это откопал)))