c语言混乱代码
㈠ 用c 语言编写程序时,应该特别注意格式,否则会影响可读性对吗
影响可读性肯定是有的,比如同样一段简单的代码
#include<stdio.h>
intmain(){
inti;
for(i=0;i<10;i++){
printf("%d ",i);
}
return0;
}
肯定会比
#include<stdio.h>
intmain(){inti;for(i=0;i<10;i++){printf("%d ",i);}return0;}
要易读得多。
不过要说特别注意,倒也不一定。C 语言不像 Python 一样,是一门特别讲究格式的语言,Python 是靠缩进来区分区块的,所以如果你每行的缩进有问题,解释器是会报错的,这就要求你必须严格遵循缩进规则。而 C 是靠分号来区分行,大括号来区分区块的,所以只要你的分号和大括号加对地方,编译器是不会在意代码格式的。因此每年都会有国际c语言混乱代码大赛(IOCCC),专门看谁能写出最混乱的代码,比如图示这段代码,但它能顺利通过编译。
所以影响可读性是肯定的,但要说特别注意格式,C 语言还不至于。不过平常最好还是严格遵循格式,不要图省事,养成良好的习惯。
㈡ 复杂C语言----“hello world”。
输出Hello, World
混乱C语言的源代码(加密源代码,嘿嘿)
下面的所有程序都可以在GCC下编译通过,只有最后一个需要动用C++的编译器g++才能编程通过。
hello1.c
#define _________ }
#define ________ putchar
#define _______ main
#define _(a) ________(a);
#define ______ _______(){
#define __ ______ _(0x48)_(0x65)_(0x6C)_(0x6C)
#define ___ _(0x6F)_(0x2C)_(0x20)_(0x77)_(0x6F)
#define ____ _(0x72)_(0x6C)_(0x64)_(0x21)
#define _____ __ ___ ____ _________
#include <stdio.h>
_____
hello2.c
#include <stdio.h>
main(){
int x=0,y[14],*z=&y;*(z++)=0x48;*(z++)=y[x++]+0x1D;
*(z++)=y[x++]+0x07;*(z++)=y[x++]+0x00;*(z++)=y[x++]+0x03;
*(z++)=y[x++]-0x43;*(z++)=y[x++]-0x0C;*(z++)=y[x++]+0x57;
*(z++)=y[x++]-0x08;*(z++)=y[x++]+0x03;*(z++)=y[x++]-0x06;
*(z++)=y[x++]-0x08;*(z++)=y[x++]-0x43;*(z++)=y[x]-0x21;
x=*(--z);while(y[x]!=NULL)putchar(y[x++]);
}
hello3.c
#include <stdio.h>
#define __(a) goto a;
#define ___(a) putchar(a);
#define _(a,b) ___(a) __(b);
main()
{ _:__(t)a:_('r',g)b:_('$',p)
c:_('l',f)d:_(' ',s)e:_('a',s)
f:_('o',q)g:_('l',h)h:_('d',n)
i:_('e',w)j:_('e',x)k:_('\n',z)
l:_('H',l)m:_('X',i)n:_('!',k)
o:_('z',q)p:_('q',b)q:_(',',d)
r:_('i',l)s:_('w',v)t:_('H',j)
u:_('a',a)v:_('o',a)w:_(')',k)
x:_('l',c)y:_('\t',g)z:___(0x0)}
hello4.c
int n[]={0x48, <br> 0x65,0x6C,0x6C, <br> 0x6F,0x2C,0x20, <br> 0x77,0x6F,0x72, <br> 0x6C,0x64,0x21, <br> 0x0A,0x00},*m=n;
main(n){putchar <br> (*m)!='\0'?main <br> (m++):exit(n++);}
hello5.c
main(){int i,n[]={(((1<<1)<<(1<<1)<<(1<< <br> 1)<<(1<<(1>>1)))+((1<<1)<<(1<<1))), (((1 <br> <<1)<<(1<<1)<<(1<<1)<<(1<<1))-((1<<1)<<( <br> 1<<1)<<(1<<1))+((1<<1)<<(1<<(1>>1)))+ (1 <br> <<(1>>1))),(((1<<1)<<(1<<1)<<(1<<1)<< (1 <br> <<1))-((1<<1)<<(1<<1)<<(1<<(1>>1)))- ((1 <br> <<1)<<(1<<(1>>1)))),(((1<<1)<<(1<<1)<<(1 <br> <<1)<<(1<<1))-((1<<1)<<(1<<1)<<(1<<(1>>1 <br> )))-((1<<1)<<(1<<(1>>1)))),(((1<<1)<< (1 <br> <<1)<<(1<<1)<<(1<<1))-((1<<1)<<(1<<1)<<( <br> 1<<(1>>1)))-(1<<(1>>1))),(((1<<1)<<(1<<1 <br> )<<(1<<1))+((1<<1)<<(1<<1)<<(1<<(1>>1))) <br> -((1<<1)<<(1<<(1>>1)))),((1<<1)<< (1<<1) <br> <<(1<<1)),(((1<<1)<<(1<<1)<<(1<<1)<<(1<< <br> 1))-((1<<1)<<(1<<1))-(1<<(1>>1))),(((1<< <br> 1)<<(1<<1)<<(1<<1)<<(1<<1))-((1<<1)<< (1 <br> <<1)<<(1<<(1>>1)))-(1<<(1>>1))), (((1<<1 <br> )<<(1<<1)<<(1<<1)<<(1<<1))- ((1<<1)<< (1 <br> <<1)<<(1<<(1>>1)))+(1<<1)), (((1<<1)<< ( <br> 1<<1)<<(1<<1)<< (1<<1))-((1<<1)<< (1<<1) <br> <<(1<<(1>>1)))-((1<<1) <<(1<< (1>>1)))), <br> (((1<<1)<< (1<<1)<<(1<<1)<< (1<<1))- ((1 <br> <<1)<<(1<<1)<<(1<<1))+((1<<1)<< (1<<(1>> <br> 1)))), (((1<<1)<<(1<<1) <<(1<<1))+(1<<(1 <br> >>1))),(((1<<1)<<(1<<1))+((1<<1)<< (1<<( <br> 1>>1))) + (1<< (1>>1)))}; for(i=(1>>1);i
<(((1<<1) <<(1<<1))+((1 <<1)<< (1<<(1>>1
))) + (1<<1)); i++) printf("%c",n[i]); }
hello6.cpp
下面的程序只能由C++的编译器编译(比如:g++)
#include <stdio.h>
#define _(_) putchar(_);
int main(void){int i = 0;_( <br> ++++++++++++++++++++++++++++ <br> ++++++++++++++++++++++++++++ <br> ++++++++++++++++++++++++++++ <br> ++++++++++++++++++++++++++++ <br> ++++++++++++++++++++++++++++ <br> ++++i)_(++++++++++++++++++++ <br> ++++++++++++++++++++++++++++ <br> ++++++++++i)_(++++++++++++++ <br> i)_(--++i)_(++++++i)_(------ <br> ---------------------------- <br> ---------------------------- <br> ---------------------------- <br> ---------------------------- <br> ----------------i)_(-------- <br> ----------------i)_(++++++++ <br> ++++++++++++++++++++++++++++ <br> ++++++++++++++++++++++++++++ <br> ++++++++++++++++++++++++++++ <br> ++++++++++++++++++++++++++++ <br> ++++++++++++++++++++++++++++ <br> ++++++++++++++++++++++++++i) <br> _(----------------i)_(++++++ <br> i)_(------------i)_(-------- <br> --------i)_(---------------- <br> ---------------------------- <br> ---------------------------- <br> ---------------------------- <br> ---------------------------- <br> ------i)_(------------------ <br> ---------------------------- <br> i)return i;}
㈢ ROT13的范例演示
ROT13为字母游戏提供了良机。许多字经过ROT13转换后,会产生另一个字。英文里字最长的范例是一组7个字母的字abjurer与nowhere;另一组七字母的是chechen与purpura。其他字的范例如表中所示。
1989年国际C语言混乱代码大赛(IOCCC)收录了一个来自布来恩·卫斯里(BrianWestley)的作品。卫斯里的计算机程序可被ROT13编解码,并且仍旧正确的通过编译。该程式主要是进行ROT13编码,或者反过来解码其输入。
新闻群组alt.folklore.urban创造了生字:furrfu,该字是常用状声辞“嘘”(sheesh)的ROT13编码。Furrfu在1992年中期首度出现,作为在alt.folklore.urban新闻群组里重复都会传奇的帖子,某些发帖人抱怨新手过度使用Sheesh!的回应。
㈣ C语言——高手请进
太牛的程序了
++1你仔细找一下,你的程序中有一个++1的地方,这里有问题,不能对常量使用自加运算符,所以错了。
for(scanf("%d", &s);*a-s;v=a[j*=v]-a[i],k=i<s,j+=
(v=j<s&&(!k&&!!printf(2+"\n\n%c"-(!l<<!j)," #Q"[l^v?(
l^j)&1:2])&&++1||a[i]<s&&v&&v-i+j&&v+i-j&&v+i-j))&&!( //在这一行
l%=s),v||(i==j?a[i+=k]=0:++a[i])>=s*k&&++a[--i])
㈤ 现在是否有国际C语言混乱代码大赛。
还存在的。
国际C语言混乱代码大赛(IOCCC, The International Obfuscated C Code Contest)是一项国际编程赛事,从1984年开始,每年举办一次(1997年、1999年、2002年、2003年和2006年例外)。目的是写出最有创意的最让人难以理解的C语言代码。
作品从联机提交,并经过好几回合的裁判的审核。作品审核是基于滥用混乱代码的程度(以及创造性的滥用)。作品通过最后一轮审核的会被归成其特别的一类以示嘉奖,例如“最滥用C预处理器”或者“最古怪的行为”,并且发表在官方IOCCC网站。作品没有通过者会被删除或遗忘;该赛事主办声明:作品被声明在IOCCC网站是竞赛的锦标。
目前在官方网站已经贴出了2014年的比赛结果,说明该项赛事还是在进行中的。
㈥ 帮忙解释下混乱C代码
呵呵,这种代码很多都是用工具直接混乱化的,楼主就不要尝试人工分析了。
你贴出来的这段基本上只是语法混乱,如果有兴趣的话可以用cdecl辅助分析一下看看。
混乱代码大赛的很多源码都是通过定义宏来混乱化的,那种cdecl都帮不上忙……
㈦ C语言中指针读写文件,问什么记事本都是乱码,怎么改呢
从代码看,在Windows平台是有大概率会乱码,假如你的商品信息数组里存放了换行就一定会乱码。
主要问题在文件的打开方式不对,fread, fwrite函数最好以二进制模式打开文件,即打开方式加上b,即(rb, wb)。在unix/Linux系统应该没问题。以下是问题解释:
二进制和文本模式的区别
1.在windows系统中,文本模式下,文件以""代表换行。若以文本模式打开文件,并用fputs等函数写入换行符" "时,函数会自动在" "前面加上" "。即实际写入文件的是"" 。
2.在类Unix/Linux系统中文本模式下,文件以" "代表换行。所以Linux系统中在文本模式和二进制模式下并无区别。
(7)c语言混乱代码扩展阅读:
ffopen为C语言编程中所需的一个常用语言,多数用来打开文件。其调用的一般形式为:文件指针名=fopen(文件名,使用文件方式);其中,‘’文件指针名”必须是被说明为FILE 类型的指针变量,文件名”是被打开文件的文件名;“使用文件方式”是指文件的类型和操作要求。“文件名”是字符串常量或字符串数组。
基本介绍函数功能:打开一个文件函数原型:FILE * fopen(const char * path,const char * mode);相关函数:open,fclose,fopen_s,_wfopenfopen所需库:返回值:文件顺利打开后,指向该流的文件指针就会被返回。如果文件打开失败则返回NULL,并把错误代码存在errno 中。一般而言,打开文件后会做一些文件读取或写入的动作,若打开文件失败,接下来的读写动作也无法顺利进行,所以一般在fopen()后作错误判断及处理。
参数说明:参数path字符串包含欲打开的文件路径及文件名,参数mode字符串则代表着流形态。
mode有下列几种形态字符串:
r 以只读方式打开文件,该文件必须存在。
r+ 以可读写方式打开文件,该文件必须存在。
rb+ 读写打开一个二进制文件,允许读写数据。
rw+ 读写打开一个文本文件,允许读和写。
w 打开只写文件,若文件存在则文件长度清为0,即该文件内容会消失。若文件不存在则建立该文件。
w+ 打开可读写文件,若文件存在则文件长度清为零,即该文件内容会消失。若文件不存在则建立该文件。
a 以附加的方式打开只写文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾,即文件原先的内容会被保留。(EOF符保留)
a+ 以附加方式打开可读写的文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾后,即文件原先的内容会被保留。 (原来的EOF符不保留)
wb 只写打开或新建一个二进制文件;只允许写数据。
wb+ 读写打开或建立一个二进制文件,允许读和写。ab+ 读写打开一个二进制文件,允许读或在文件末追加数据。
㈧ c语言混乱代码
这段混乱代码可以改写为如下形式:
//---------------------------------------------------------------------------
#include"stdio.h"
main(int argv)
{
char *c1="=^_^=Mx\"Mehc'2)IB[RLCET-_-b";
char *c2="^o^";
char *c3="@_@";
char *c4="- -!";
char *c5="^o^y";
if(argv^*(c2+(*c3>>7))-74)
{if (argv^(c4[1])-13)
putchar((c1[argv+4])^argv-1);
else
putchar(10);
main(c5[1]-'n'+argv);
}
getch();
}
//---------------------------------------------------------------------------
请自行分析吧!
㈨ 国际C语言混乱代码大赛的代码样例
第21届国际C语言混乱代码大赛(IOCCC)正式发布了获奖源代码。IOCCC要求参赛者写出最有创意且最让人难以理解的C语言代码,大小限制在4 kb以内,因此每位参赛者的作品都让人印象深刻。获胜者包括1名法国人,1名韩国人,5名美国人,1名比利时人,1名以色列人,1名英国人,4名日本人和1名中国人。
选取了几个代表性作品大家共赏一下更可怕的是,它们都可以编译通过!!!! #include <stdio.h>
#include <stdlib.h>
#define s(_)sizeof(_)
#define n void*
#define z(_)_,_,_
#define x (s*)__
#define y (s*)_
#define h C(y,y)
#define o &d
#define t() (p)
#define w(_)_,_
typedef n (*(*(*(*p)(n,n))(n,n))(n,n))(n,n);
typedef struct s { struct s* a ; struct s* UNUSED; } s;
typedef struct t { struct s* UNUSED; struct s* a ; } *t;
n __(n _,n __) { return _;}n _(n _,n __){return __; }
typedef unsigned char e;
#define _(_)((*_).a)
s*
w,
a={x ,x},
b={x ,y},
c={y,x},d={y,y};s l[]={&b,&d,w (w(w(w(w(w(&d)))))),w(&d),&c,&d,w(w(w(
&d))),&c,w(&b),&d,&a,z(&d),z(w (w(w(w(w(&d)))))),&b,&b,w(&d),&a,&b,w(&
d), z(w
(w( w(w
(&d))))),w(w(w(&d))), &b,&c,&d, &d,&a,&c ,w(w(&d)), &c,z(&b) ,w(&d),w(&a)
};s* C(s* a, s* b) {s* _=malloc(s(s));_(_)=a;_((t)_)=b;return _;}e k2=s(l
);p f(p
a,p b)
{ e k;s d;p v,r, q,i,C,c,u,g,m=t( )
_ ( _(_(w)));C=t() _(_(&l[fread(&k,s(e )
,s ( e),stdin)]));v =C(_,__);d=l[k=(e )
C ( k2,k)];c=(u=a( b,_),i=(t()_((t )
_ ( _(w))))(_,_(_(o)) ),(a(_(_((t)o)),(t( )
_ ( _((t)o)))(_,__) ))(b(_((t)_((t)o) )
, ( t()_((t)_((t)o))) (_,__)),_));{p a=t( )
_ ( (t)_(o));{p b= C(_,i(u(_,__),_) )
; { p u=C(_,(t()_(_(o) ))(_,__));_(_(_(w)) )
= ( s*)i(__,_(_( _(w))));r=b(m(c,_ )
,C ( m(_,(t()_(( t)_(_(w))))(_,__) )
, ( f)));v=b(_,v);i =b(a(_,__),_);g=(b )
( a(m(c(_,__),__ ),_),_);q=u(_((t )
_ ( o)),_)((t()_( (t)_(_(w))))((t( )
_ ( _((t)o)))(_(_((t )_(w))),(t()_(_((t )
_ ( w))))(_,__))( _,__),_)(_,__),_ )
;_ ( _((t)_(w))) = (s*)u(_((t)_(o)),_ )
( (t()_((t)_(_(w)))) (_,__),_)(_(_((t)o) )
,_ ( _((t)_(w))));} }_((t)_(_(w)))=(s* )
q ( a=(t()_((t)_(_(w))) )(_,__),_((t)_(_(w))) )
; fwrite((k=k,&k2) ,s(e),u(_,g)(s(e )
, ( e)s(s[s(s[s(s[s (s)])])])),stdout )
; fwrite((k2=k,&k) ,s(e),u(__,g)(s(e )
, ( e)s(s[s(s[s(s[s (s)])])])),stdout )
;_ ( _(_((t)w)))=(s*) u((t()_(_(_((t)w))) )
( _,__),_(_(_((t)w ))));_(_((t)_(w)) )
= ( s*)q(a(_(_((t) o)),_(_((t)_(w))) )
,_ ( _((t)_(w))));} _((t)_(_((t)w)))=(s* )
( t()_(_(_((t)w))) )(_((t)_(_((t)w)) )
,u ( (t()_((t)_(_(( t)w))))(_,__),_((t )
_ ( _((t)w)))));g =u((q=u(C(__,(t( )
_ ( _(_((t)w))))(_((t )_(_((t)w))),_)),_) )
( _,__),g);v=g( __,i(u(_,i(f,_) )
( _(_((t)o)),_( (t)_((t)o))),v) )
,r= q(_
,g( f,i
(v(f,(_(_(_(w)))=(s*)m,_)),r)));return q(_,v)(r(g(__,a),g(__,b)),r);}
int main
(){w=C(C(h,h),C(h,h));return printf((e*)f(_,_)(OK
,
^ Error
)) (运行生成更小的头像代码) /*++++[>i>n[t*/#include<stdio.h>/*2w0,1m2,]_<n+am+o>r>i>=>(['0n1'0)1;*/int/**/main(int/**/n,char**m){FILE*p,*q;intA,k,a,r,i/*#uinndcelfu_dset<rsitcdti_oa.nhs>i/_*/;char*d=P%d
%d40%d/**/
%d
0wb+,b[1024],y[]=yuriyurarararayuruyuri*daijiken**akkari~n**/y*u*k/riin<ty(uyr)g,aur,arr[a1r2a82*y2*/u*r{uyu}riOcyurhiyua**rrar+*arayra*=yuruyurwiyuriyurara'rariayuruyuriyuriyu>rarararayuruy9uriyu3riyurar_aBrMaPrOaWy^?*]/f]`;hvroai<dp/f*i*s/<ii(f)a{tpguat<cahfaurh(+uf)a;f}vivn+tf/g*`*w/jmaa+i`ni(/***/i+k[>+b+i>++b++>l[rb;int/**/u;for(i=0;i<101;i++)y[i*2]^=~hktrvg~dmG*eoa+%squ#l2:(wn1l))v?wM353{/Y;lgcGp`vedllwudvOK`cct~[|ju{stkjalor(stwvnegtyogYURUYURI[i]^y[i*2+1]^4;/*!*/p=(n>1&&(m[1][0]-'-'||m[1][1]!='