xintu1987 发表于 2008-2-15 22:27:50

简单的16进制编译源码(星端)

因为还没做好~故发了最原始的上来~

哪些不足或错的请大家指教~!char fp;

long openfile(int o){
char i,l;
char fname;
char noww;

memset(fname,0,20);memset(noww,0,60);
strcat(fname,o);
if(ChDir(fname)){
strcat(noww,fname);strcat(noww,"/");
}
else ChDir("/");

while(1){
if (FileList(fname)){
    if(!strcmp(fname,"..")){
    if(!strcmp(fname,"..")&&strlen(noww)==1)return '0';
    for(i=strlen(noww);noww!='/'&&i>0;i--){
    if(i<0)noww=0;else strcpy(noww,"/");
    ChDir(noww);
    }
   
    continue;
    }//..
    if(ChDir(fname)){strcat(noww,fname);strcat(noww,"/");}
    else {strcat(noww,fname);return noww;}
}//if
else {
    if(strlen(noww)==1)return '0';
for(i=strlen(noww);noww!='/'&&i>0;i--){
    if(i<0)noww=0;else strcpy(noww,"/");
    ChDir(noww);

}
}

}
}



int sl(long x){
int i,l,o;
char ts,zf;
memset(zf,0,100);
strcpy(ts,x);
i=strlen(ts);
for(l=0;l<i;l++){
if(ts/16==0)strcat(zf,"0");
if(ts/16==1)strcat(zf,"1");
if(ts/16==2)strcat(zf,"2");
if(ts/16==3)strcat(zf,"3");
if(ts/16==4)strcat(zf,"4");
if(ts/16==5)strcat(zf,"5");
if(ts/16==6)strcat(zf,"6");
if(ts/16==7)strcat(zf,"7");
if(ts/16==8)strcat(zf,"8");
if(ts/16==9)strcat(zf,"9");
if(ts/16==10)strcat(zf,"A");
if(ts/16==11)strcat(zf,"B");
if(ts/16==12)strcat(zf,"C");
if(ts/16==13)strcat(zf,"D");
if(ts/16==14)strcat(zf,"E");
if(ts/16==15)strcat(zf,"F");
o++;



if(ts%16==0)strcat(zf,"0");
if(ts%16==1)strcat(zf,"1");
if(ts%16==2)strcat(zf,"2");
if(ts%16==3)strcat(zf,"3");
if(ts%16==4)strcat(zf,"4");
if(ts%16==5)strcat(zf,"5");
if(ts%16==6)strcat(zf,"6");
if(ts%16==7)strcat(zf,"7");
if(ts%16==8)strcat(zf,"8");
if(ts%16==9)strcat(zf,"9");
if(ts%16==10)strcat(zf,"A");
if(ts%16==11)strcat(zf,"B");
if(ts%16==12)strcat(zf,"C");
if(ts%16==13)strcat(zf,"D");
if(ts%16==14)strcat(zf,"E");
if(ts%16==15)strcat(zf,"F");
o++;


}
return zf;

}








void main(){
char f,sstr,show,shoo,ch,tmp,new,tt;
int x,y,i;
long l,k,d,nowp,hh;

i=openfile("/");
fp=fopen(i,"r+");
if(!fp)exit(0);

y=y+2;hh=0;
k=fseek(fp,0,2);k=k-1;
printf("%d",k);

getchar();
rewind(fp);
while(1){
k=fseek(fp,0,2);k=k-1;
rewind(fp);

if(new==2){if(hh>=k-8);else hh=hh;;}
if(new==1)hh=hh-8;
ClearScreen();

for(i=0;i<5;i++){
if(nowp>=hh)y=i;
hh=hh+8;
}

for(i=0;i<5;i++){
memset(show,0,30);

if(hh>=k){hh=k-40;}
if(nowp>k)x=k%8*12;
else x=(nowp-hh)*12;
fseek(fp,hh,0);
fread(show,1,8,fp);
l=sl(show);
TextOut(1,i*13+2,l,1);
TextOut(105,i*13+1,show,1);
sprintf(sstr,"%d",nowp);
TextOut(1,70,sstr,1);
}

Block(x,y*13+1,x+12,y*13+13,2);

Refresh();new=0;
ch=getchar();

if(ch==30){
l=ss();if(l=='0')continue;
SetScreen(1);
printf("%d",l);getchar();
nowp=l;
hh=l-l%8;continue;
}
if(ch==20){
if(hh==0&&nowp<hh){hh=0;continue;}
nowp=nowp-8;
if(y==0){new=1;continue;}
}//20结束

else if(ch==21){

if(y==4)new=2;
nowp=nowp+8;
if(nowp>=k){nowp=k;continue;}
}//21结束
else if(ch==23){
if(hh==0&&nowp<=hh){hh=0;nowp=0;continue;}
if(nowp<=hh){new=1; nowp--;continue;}
   nowp--;
}//23结束
else if(ch==22){
if(nowp==k)continue;
if(nowp==hh+7){nowp=nowp+8;new=2;continue;}
nowp++;

}//22结束

if(k<8)hh=hh-40;
if(ch==13){
l=input("请输入替换的字符串");
strcpy(shoo,l);
fseek(fp,nowp,0);
fwrite(shoo,1,strlen(shoo),fp);
}



if(ch==27){fclose(fp);exit(0);}

}//while结束


}//main结束

滴鱼 发表于 2008-2-16 18:48:35

沙发,帮你顶顶:victory:

FrankHB 发表于 2008-2-24 12:44:17

...两串if。。。。。

FrankHB 发表于 2008-2-24 12:51:36

...
char a;
...
a=ts>>4;
...
if(isdigit(a+0x30))strcat(zf,a);
else if(a<16){a=a+'A'-10;strcat(zf,a);}
o++;
...

[ 本帖最后由 FrankHB 于 2008-2-24 12:57 编辑 ]

红色激情 发表于 2008-2-24 12:53:20

TYCY 发表于 2008-2-24 14:13:41

LS的LS,你的签名????

FrankHB 发表于 2008-2-25 00:01:06


有什么不对吗?
页: [1]
查看完整版本: 简单的16进制编译源码(星端)