my friend gave this code to me..... it is working fine....how come?
please explain me if u can understand.....
#include <stdio.h>
#include <conio.h>
#define _(__,___)\
___##__
_(id,vo) _8(_(
ar,ch)a,_(ar ,ch
)*_2){_(ile,wh) (a
--)_(ntf, pri)("%s"
,_2);}_(id,vo) _1(_
(nt,i) s,_(nt,i) n,
_(nt,i) k=1,_(ar,ch
) *_3="* "){_8 ( k,
"\n");_8(s," ");_8(
n,_3);}_(id,vo) _6(_(nt,i) k,_(nt,i)
l,_(ar,ch) *_9_){_8(k,"\n");_8(l, " ");_(ile
,wh)(*_9_)_(ntf,pri)("%c",*_9_++-12);} _(id,
vo) _(in,ma)(){_(ar,ch) _1_1_[]="cu€" "t,nq"
"€,~qsm~p8",_2_2_[]="X{wm";_(ar,ch) _22[]=
{240,32,0},_4;_1(20,3,6);_1(19,1)
;_1(4,1,0);_1(19,1); _1(1,1, 0,
_22);_1(1,1,0);_1(19,1);
_1(4,1,0);_1(15,8);
_1(13,10);_1(0,1,0,"*");_
(or,f)(_4=0;_4<4;_4++) {_1(15+_4*2,
8-_4*2);_(f,i)(_4==0) _1(0,2,0," *");}_(
or,f)(_4=2;_4>=0;_4--)_1(15+_4*2,8-_4*2);_6(3,
26,_1_1_);_6(2,40,_2_2_);_(ile,wh)(!_(it,kbh)());} 11 1877 ka**************@gmail.com said:
my friend gave this code to me..... it is working fine....how come?
foo.c:2: conio.h: No such file or directory
Looks like it doesn't work fine after all.
And even if you ignore that, it gets the entry point's return type wrong, so
the behaviour of the program is undefined. There's nothing even remotely
fine about this program.
--
Richard Heathfield
"Usenet is a strange place" - dmr 29/7/1999 http://www.cpax.org.uk
email: rjh at above domain (but drop the www, obviously)
On Tue, 8 Aug 2006 ka**************@gmail.com wrote:
my friend gave this code to me..... it is working fine....how come?
please explain me if u can understand.....
#include <stdio.h>
#include <conio.h>
#define _(__,___)\
___##__
_(id,vo) _8(_(
ar,ch)a,_(ar ,ch
)*_2){_(ile,wh) (a
--)_(ntf, pri)("%s"
,_2);}_(id,vo) _1(_
(nt,i) s,_(nt,i) n,
_(nt,i) k=1,_(ar,ch
) *_3="* "){_8 ( k,
"\n");_8(s," ");_8(
n,_3);}_(id,vo) _6(_(nt,i) k,_(nt,i)
l,_(ar,ch) *_9_){_8(k,"\n");_8(l, " ");_(ile
,wh)(*_9_)_(ntf,pri)("%c",*_9_++-12);} _(id,
vo) _(in,ma)(){_(ar,ch) _1_1_[]="cu€" "t,nq"
"€,~qsm~p8",_2_2_[]="X{wm";_(ar,ch) _22[]=
{240,32,0},_4;_1(20,3,6);_1(19,1)
;_1(4,1,0);_1(19,1); _1(1,1, 0,
_22);_1(1,1,0);_1(19,1);
_1(4,1,0);_1(15,8);
_1(13,10);_1(0,1,0,"*");_
(or,f)(_4=0;_4<4;_4++) {_1(15+_4*2,
8-_4*2);_(f,i)(_4==0) _1(0,2,0," *");}_(
or,f)(_4=2;_4>=0;_4--)_1(15+_4*2,8-_4*2);_6(3,
26,_1_1_);_6(2,40,_2_2_);_(ile,wh)(!_(it,kbh)());}
Nonportabilities [1] aside, the actual obfuscation here is
fairly simple: #define _(__,___) ___##__ concatenates its two
arguments in reverse. Thus, _(id,vo) gives gives you void,
_(ar,ch)*_2 gives you char*_2 (and so forth).
Tak-Shing
[1] I would leave it to the pedants to enumerate them.
Tak-Shing Chan (in Pi******************************@scorpio.gold.ac.u k) said:
| On Tue, 8 Aug 2006 ka**************@gmail.com wrote:
|
|| my friend gave this code to me..... it is working fine....how come?
||
|| please explain me if u can understand.....
||
|| #include <stdio.h>
|| #include <conio.h>
||
||
|| #define _(__,___)\
|| ___##__
|| _(id,vo) _8(_(
|| ar,ch)a,_(ar ,ch
|| )*_2){_(ile,wh) (a
|| --)_(ntf, pri)("%s"
|| ,_2);}_(id,vo) _1(_
|| (nt,i) s,_(nt,i) n,
|| _(nt,i) k=1,_(ar,ch
|| ) *_3="* "){_8 ( k,
|| "\n");_8(s," ");_8(
|| n,_3);}_(id,vo) _6(_(nt,i) k,_(nt,i)
|| l,_(ar,ch) *_9_){_8(k,"\n");_8(l, " ");_(ile
|| ,wh)(*_9_)_(ntf,pri)("%c",*_9_++-12);} _(id,
|| vo) _(in,ma)(){_(ar,ch) _1_1_[]="cu?" "t,nq"
|| "?,~qsm~p8",_2_2_[]="X{wm";_(ar,ch) _22[]=
|| {240,32,0},_4;_1(20,3,6);_1(19,1)
|| ;_1(4,1,0);_1(19,1); _1(1,1, 0,
|| _22);_1(1,1,0);_1(19,1);
|| _1(4,1,0);_1(15,8);
|| _1(13,10);_1(0,1,0,"*");_
|| (or,f)(_4=0;_4<4;_4++) {_1(15+_4*2,
|| 8-_4*2);_(f,i)(_4==0) _1(0,2,0," *");}_(
|| or,f)(_4=2;_4>=0;_4--)_1(15+_4*2,8-_4*2);_6(3,
|| 26,_1_1_);_6(2,40,_2_2_);_(ile,wh)(!_(it,kbh)());}
|
| Nonportabilities [1] aside, the actual obfuscation here is
| fairly simple: #define _(__,___) ___##__ concatenates its two
| arguments in reverse. Thus, _(id,vo) gives gives you void,
| _(ar,ch)*_2 gives you char*_2 (and so forth).
|
| Tak-Shing
|
| [1] I would leave it to the pedants to enumerate them.
Ugh, not pretty! With liberal renaming I got:
#include <stdio.h>
#include <conio.h>
void fna(char a,char *s)
{ while (a--) printf("%s",s);
}
void fnb(int k,int l,char *9)
{ fna(k,"\n");
fna(l, " ");
while(*9) printf("%c",*9++-12);
}
void fnc(int s,int n,int k=1,char *t="* ")
{ fna(k,"\n");
fna(s," ");
fna(n,t);
}
void main()
{ char v1[] = "cu?t,nq?,~qsm~p8",
v2[] = "X{wm",
v3[] = { 240,32,0 },
i;
fnc(20,3,6);
fnc(19,1);
fnc(4,1,0);
fnc(19,1);
fnc(1,1, 0,v3);
fnc(1,1,0);
fnc(19,1);
fnc(4,1,0);
fnc(15,8);
fnc(13,10);
fnc(0,1,0,"*");
for (i=0; i<4; i++)
{ fnc(15+i*2,8-i*2);
if (i==0) fnc(0,2,0," *");
}
for (i=2; i>=0; i--) fnc(15+i*2,8-i*2);
fnb(3,26,v1);
fnb(2,40,v2);
while (!kbhit()) ;
}
Left as an exercise for the OP to enumerate the problems.
--
Morris Dovey
DeSoto Solar
DeSoto, Iowa USA http://www.iedu.com/DeSoto ka**************@gmail.com writes:
my friend gave this code to me..... it is working fine....how come?
please explain me if u can understand.....
"u" doesn't read this newsgroup. If you meant "you", please say so.
Silly abbreviations like "u" for "you" are discouraged here.
#include <stdio.h>
#include <conio.h>
This is a system-specific header.
>
#define _(__,___)\
___##__
The identifiers __ and ___ are reserved to the implementation.
Leaving that aside, the macro takes two arguments and pastes them
together in reverse order. For example, "_(id,vo)" expands to "void".
_(id,vo) _8(_(
ar,ch)a,_(ar ,ch
)*_2){_(ile,wh) (a
[snip]
It's not worth my time to wade through all that noise. If you're
curious find out if your compiler has an option to show you the output
of the preprocessor. Coment out the #include directives so it doesn't
insert the contents of those headers into the output.
--
Keith Thompson (The_Other_Keith) ks***@mib.org <http://www.ghoti.net/~kst>
San Diego Supercomputer Center <* <http://users.sdsc.edu/~kst>
We must do something. This is something. Therefore, we must do this.
Keith Thompson wrote:
ka**************@gmail.com writes:
>#define _(__,___)\ ___##__
The identifiers __ and ___ are reserved to the implementation.
Even as macro arguments? On comp.std.c I was told that
#if 0
__special
#endif
int main(void) {}
and
#ifdef __special
/* nothing */
#endif
int main(void) {}
are both strictly conforming -- essentially because __special is only
reserved for "any" use after preprocessing. During preprocessing, it is
reserved for use as a macro name, but not for anything beyond that unless
it doesn't affect any (otherwise) strictly conforming program. Since naming
your macro arguments __ and ___ prevents any predefined macros __ and ___
from being expanded, I think that should be fine.
Harald van Dijk <tr*****@gmail.comwrites:
Keith Thompson wrote:
>ka**************@gmail.com writes:
>>#define _(__,___)\ ___##__
The identifiers __ and ___ are reserved to the implementation.
Even as macro arguments? On comp.std.c I was told that
#if 0
__special
#endif
int main(void) {}
and
#ifdef __special
/* nothing */
#endif
int main(void) {}
are both strictly conforming -- essentially because __special is only
reserved for "any" use after preprocessing. During preprocessing, it is
reserved for use as a macro name, but not for anything beyond that unless
it doesn't affect any (otherwise) strictly conforming program. Since naming
your macro arguments __ and ___ prevents any predefined macros __ and ___
from being expanded, I think that should be fine.
You may be right; I'm not sure. (I avoid the issue by avoiding
identifiers starting with '_' altogether.)
--
Keith Thompson (The_Other_Keith) ks***@mib.org <http://www.ghoti.net/~kst>
San Diego Supercomputer Center <* <http://users.sdsc.edu/~kst>
We must do something. This is something. Therefore, we must do this.
Harald van Dijk schrieb:
Keith Thompson wrote:
>>ka**************@gmail.com writes:
>>>#define _(__,___)\ ___##__
The identifiers __ and ___ are reserved to the implementation.
Even as macro arguments? On comp.std.c I was told that
#if 0
__special
#endif
int main(void) {}
and
#ifdef __special
/* nothing */
#endif
int main(void) {}
are both strictly conforming -- essentially because __special is only
reserved for "any" use after preprocessing. During preprocessing, it is
reserved for use as a macro name, but not for anything beyond that unless
it doesn't affect any (otherwise) strictly conforming program. Since naming
your macro arguments __ and ___ prevents any predefined macros __ and ___
from being expanded, I think that should be fine.
Predefined macro names must not be the subject of a #define or
#undef directive; i.e. #define __(_,___) ___##_ would not have
been allowed as _ followed by an uppercase letter or _ belongs to
the "implementation namespace" for predefined macro names. (C99,
6.10.8#4)
Identifiers starting with _ followed by an uppercase letter or
_ are always reserved for any use, identifiers starting with
_ followed by a lowercase letter are reserved for file scope
(ordinary and tag namespace) identifiers. (C99, 7.10.3#1)
As macro names are identifiers (C99, 6.2.1#1), I'd say you are
right.
Cheers
Michael
--
E-Mail: Mine is an /at/ gmx /dot/ de address. ka**************@gmail.com wrote:
my friend gave this code to me..... it is working fine....how come?
please explain me if u can understand.....
#include <stdio.h>
#include <conio.h>
#define _(__,___)\
___##__
_(id,vo) _8(_(
ar,ch)a,_(ar ,ch
)*_2){_(ile,wh) (a
--)_(ntf, pri)("%s"
,_2);}_(id,vo) _1(_
(nt,i) s,_(nt,i) n,
_(nt,i) k=1,_(ar,ch
) *_3="* "){_8 ( k,
"\n");_8(s," ");_8(
n,_3);}_(id,vo) _6(_(nt,i) k,_(nt,i)
l,_(ar,ch) *_9_){_8(k,"\n");_8(l, " ");_(ile
,wh)(*_9_)_(ntf,pri)("%c",*_9_++-12);} _(id,
vo) _(in,ma)(){_(ar,ch) _1_1_[]="cu€" "t,nq"
"€,~qsm~p8",_2_2_[]="X{wm";_(ar,ch) _22[]=
{240,32,0},_4;_1(20,3,6);_1(19,1)
;_1(4,1,0);_1(19,1); _1(1,1, 0,
_22);_1(1,1,0);_1(19,1);
_1(4,1,0);_1(15,8);
_1(13,10);_1(0,1,0,"*");_
(or,f)(_4=0;_4<4;_4++) {_1(15+_4*2,
8-_4*2);_(f,i)(_4==0) _1(0,2,0," *");}_(
or,f)(_4=2;_4>=0;_4--)_1(15+_4*2,8-_4*2);_6(3,
26,_1_1_);_6(2,40,_2_2_);_(ile,wh)(!_(it,kbh)());}
Yikes, someone has too much spare time.... ka**************@gmail.com wrote:
my friend gave this code to me..... it is working fine....how come?
please explain me if u can understand.....
#include <stdio.h>
#include <conio.h>
#define _(__,___)\
___##__
_(id,vo) _8(_(
ar,ch)a,_(ar ,ch
)*_2){_(ile,wh) (a
--)_(ntf, pri)("%s"
,_2);}_(id,vo) _1(_
(nt,i) s,_(nt,i) n,
_(nt,i) k=1,_(ar,ch
) *_3="* "){_8 ( k,
"\n");_8(s," ");_8(
n,_3);}_(id,vo) _6(_(nt,i) k,_(nt,i)
l,_(ar,ch) *_9_){_8(k,"\n");_8(l, " ");_(ile
,wh)(*_9_)_(ntf,pri)("%c",*_9_++-12);} _(id,
vo) _(in,ma)(){_(ar,ch) _1_1_[]="cu€" "t,nq"
"€,~qsm~p8",_2_2_[]="X{wm";_(ar,ch) _22[]=
{240,32,0},_4;_1(20,3,6);_1(19,1)
;_1(4,1,0);_1(19,1); _1(1,1, 0,
_22);_1(1,1,0);_1(19,1);
_1(4,1,0);_1(15,8);
_1(13,10);_1(0,1,0,"*");_
(or,f)(_4=0;_4<4;_4++) {_1(15+_4*2,
8-_4*2);_(f,i)(_4==0) _1(0,2,0," *");}_(
or,f)(_4=2;_4>=0;_4--)_1(15+_4*2,8-_4*2);_6(3,
26,_1_1_);_6(2,40,_2_2_);_(ile,wh)(!_(it,kbh)());}
If u have many spare time. u can find all the code on IOCCC. This
place u can find what u want, hah
i am very thankful to u sir......
Tak-Shing Chan wrote:
On Tue, 8 Aug 2006 ka**************@gmail.com wrote:
my friend gave this code to me..... it is working fine....how come?
please explain me if u can understand.....
#include <stdio.h>
#include <conio.h>
#define _(__,___)\
___##__
_(id,vo) _8(_(
ar,ch)a,_(ar ,ch
)*_2){_(ile,wh) (a
--)_(ntf, pri)("%s"
,_2);}_(id,vo) _1(_
(nt,i) s,_(nt,i) n,
_(nt,i) k=1,_(ar,ch
) *_3="* "){_8 ( k,
"\n");_8(s," ");_8(
n,_3);}_(id,vo) _6(_(nt,i) k,_(nt,i)
l,_(ar,ch) *_9_){_8(k,"\n");_8(l, " ");_(ile
,wh)(*_9_)_(ntf,pri)("%c",*_9_++-12);} _(id,
vo) _(in,ma)(){_(ar,ch) _1_1_[]="cu€" "t,nq"
"€,~qsm~p8",_2_2_[]="X{wm";_(ar,ch) _22[]=
{240,32,0},_4;_1(20,3,6);_1(19,1)
;_1(4,1,0);_1(19,1); _1(1,1, 0,
_22);_1(1,1,0);_1(19,1);
_1(4,1,0);_1(15,8);
_1(13,10);_1(0,1,0,"*");_
(or,f)(_4=0;_4<4;_4++) {_1(15+_4*2,
8-_4*2);_(f,i)(_4==0) _1(0,2,0," *");}_(
or,f)(_4=2;_4>=0;_4--)_1(15+_4*2,8-_4*2);_6(3,
26,_1_1_);_6(2,40,_2_2_);_(ile,wh)(!_(it,kbh)());}
Nonportabilities [1] aside, the actual obfuscation here is
fairly simple: #define _(__,___) ___##__ concatenates its two
arguments in reverse. Thus, _(id,vo) gives gives you void,
_(ar,ch)*_2 gives you char*_2 (and so forth).
Tak-Shing
[1] I would leave it to the pedants to enumerate them.
---559023410-851401618-1155060259=:7062--
On 2006-08-09, MQ <mi**************@gmail.comwrote:
> ka**************@gmail.com wrote:
>my friend gave this code to me..... it is working fine....how come?
please explain me if u can understand.....
#include <stdio.h> #include <conio.h>
#define _(__,___)\ ___##__ _(id,vo) _8(_( ar,ch)a,_(ar ,ch )*_2){_(ile,wh) (a --)_(ntf, pri)("%s" ,_2);}_(id,vo) _1(_ (nt,i) s,_(nt,i) n, _(nt,i) k=1,_(ar,ch ) *_3="* "){_8 ( k, "\n");_8(s," ");_8( n,_3);}_(id,vo) _6(_(nt,i) k,_(nt,i) l,_(ar,ch) *_9_){_8(k,"\n");_8(l, " ");_(ile ,wh)(*_9_)_(ntf,pri)("%c",*_9_++-12);} _(id, vo) _(in,ma)(){_(ar,ch) _1_1_[]="cu€" "t,nq" "€,~qsm~p8",_2_2_[]="X{wm";_(ar,ch) _22[]= {240,32,0},_4;_1(20,3,6);_1(19,1) ;_1(4,1,0);_1(19,1); _1(1,1, 0, _22);_1(1,1,0);_1(19,1); _1(4,1,0);_1(15,8); _1(13,10);_1(0,1,0,"*");_ (or,f)(_4=0;_4<4;_4++) {_1(15+_4*2, 8-_4*2);_(f,i)(_4==0) _1(0,2,0," *");}_( or,f)(_4=2;_4>=0;_4--)_1(15+_4*2,8-_4*2);_6(3, 26,_1_1_);_6(2,40,_2_2_);_(ile,wh)(!_(it,kbh)());}
Yikes, someone has too much spare time....
Time that would better be spent learning C. There's no such thing
as "conio.h" in standard C. (I'm ignoring the various actual code
problems others have pointed out.)
--
Andrew Poelstra <http://www.wpsoftware.net/projects>
To reach me by email, use `apoelstra' at the above domain.
"Do BOTH ends of the cable need to be plugged in?" -Anon. This thread has been closed and replies have been disabled. Please start a new discussion. Similar topics
by: Jaspreet |
last post by:
I was recently asked this question in an interview. Unfortunately I was
not able to answer it and the interviewer made a decision on my C
strengths (or weekness) based on this single question and...
|
by: Jeff Boes |
last post by:
I'm hoping there's someone here with experience in building the Visual
Explain tool from Red Hat. I downloaded it and the J2 SDK, but when I
attempt to follow the build instructions, I get messages...
|
by: Jon Lapham |
last post by:
I have been using the EXPLAIN ANALYZE command to debug some performance
bottlenecks in my database. In doing so, I have found an oddity (to me
anyway). The "19ms" total runtime reported below...
|
by: marklawford |
last post by:
Not having earned my DBA badge from the scouts just yet I'm a little
lost with an error I'm getting.
We've just upgraded our development database from 7.2 to 8.2 as the
first step in upgrading...
|
by: JAW |
last post by:
This plan seems like it should perform well. Does anyone see anything.
SQL Statement Text:
DECLARE MTR - RDG - EST - CSR CURSOR
FOR
|
by: Faisal Vali |
last post by:
Hi - I'm new to javascript and I was reading the book Javascript
Professional Projects - there is a fragment that has me a little
perplexed, and I was wondering if anyone could explain why and how...
|
by: kabotnet |
last post by:
Hi,
I'm new in db2, I'm trying to execute EXPLAIN command on some queries
but i have error like:
And message similar to: Token EXPLAIN is not valid, valid tokens ( END
GET SET CALL DROP FREE...
|
by: sathishc58 |
last post by:
Hi All,
Here is the code which generates Segmentation Fault. Can anyone explain why the third printf fails and the first printf works?
main()
{
char ch={"Hello"};
char *p;
...
|
by: LanaR |
last post by:
Hello,
one sql statement is causing severe performance issue. The problem occurs only in UDB environment, the same statemnt on the mainframe is running fine. I have an explain output from the sql....
|
by: w.l.fischer |
last post by:
Hi,
the following sequence:
set current explain mode yes;
set current explain snapshot yes;
update ...;
set current explain mode no;
|
by: aa123db |
last post by:
Variable and constants
Use var or let for variables and const fror constants.
Var foo ='bar';
Let foo ='bar';const baz ='bar';
Functions
function $name$ ($parameters$) {
}
...
|
by: emmanuelkatto |
last post by:
Hi All, I am Emmanuel katto from Uganda. I want to ask what challenges you've faced while migrating a website to cloud.
Please let me know.
Thanks!
Emmanuel
|
by: BarryA |
last post by:
What are the essential steps and strategies outlined in the Data Structures and Algorithms (DSA) roadmap for aspiring data scientists? How can individuals effectively utilize this roadmap to progress...
|
by: nemocccc |
last post by:
hello, everyone, I want to develop a software for my android phone for daily needs, any suggestions?
|
by: Sonnysonu |
last post by:
This is the data of csv file
1 2 3
1 2 3
1 2 3
1 2 3
2 3
2 3
3
the lengths should be different i have to store the data by column-wise with in the specific length.
suppose the i have to...
|
by: Hystou |
last post by:
There are some requirements for setting up RAID:
1. The motherboard and BIOS support RAID configuration.
2. The motherboard has 2 or more available SATA protocol SSD/HDD slots (including MSATA, M.2...
|
by: marktang |
last post by:
ONU (Optical Network Unit) is one of the key components for providing high-speed Internet services. Its primary function is to act as an endpoint device located at the user's premises. However,...
|
by: Hystou |
last post by:
Most computers default to English, but sometimes we require a different language, especially when relocating. Forgot to request a specific language before your computer shipped? No problem! You can...
|
by: jinu1996 |
last post by:
In today's digital age, having a compelling online presence is paramount for businesses aiming to thrive in a competitive landscape. At the heart of this digital strategy lies an intricately woven...
| |