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]!='