?? hallmain.c
字號:
//********************************************
//文件名:HALLMAIN.C
//功能:1. 調用顯示漢字函數
// 2. 調用字符處理函數
// 3. 調用讀扇區匯編子程序
// 4. 調用寫扇區匯編子程序
// 5. 對扇區數據進行十六進制讀、字符讀、
// 備份、拷貝、搬移、寫入、清零操作
//********************************************
#include<string.h> //1.
#include<graphics.h> //2.
#include<stdio.h> //3.
#include<conio.h> //4.
#include<ctype.h> //5.
#include<fcntl.h> //6.
#include<io.h> //7.
#include<stdlib.h> //8.
extern RHD(int,int,int,int,char *); //9.聲明讀扇區匯編子程序
extern WHD(int,int,int,int,char *); //10.聲明寫扇區匯編子程序
int outhz(int,int,char *,int); //11.聲明漢字顯示函數
void finame(int,int); //12.聲明字符處理函數
void disph(void); //13.聲明十六進制顯示函數
unsigned char h[512]; //14.
void main(int argc,char *argv[]) //15.
{ //16.
FILE *tmfp,*fp; //17.
char sh[13]; //18.
char name[13]; //19.
char th[20]; //20.
char fh[512]; //21.
char ch[2]; //22.
int i,j,c; //23.
int y1,y2; //24.
unsigned long k,k1; //25.
long t=0; //26.
extern char gsh[16]; //27.
unsigned char s1,s2,s3,s4; //28.
int gdriver=DETECT,gmode; //29.
registerbgidriver(EGAVGA_driver); //30.
initgraph(&gdriver,&gmode,""); //31.
setbkcolor(0); //32.
cleardevice(); //33.
//34.
if(argc==1) //35.如果命令行參數為1
{ //36.
outhz(0,20,"輸入[HEALLSE /?]" //37.
"獲得幫助",7); //38.
outhz(0,40,"按任一鍵退出",7); //39.
getch(); //40.
closegraph(); //41.
exit(0); //42.
} //43.
strcpy(sh,argv[1]); //44.拷貝字符串
if((strcmp(sh,"/?")==0)&&argc==2) //45.顯示幫助提示
{ //46.
outhz(0,20,"程序HEALLSE.EXE" //47.
"使用方法:",7); //48.
outhz(0,40,"1. [HEALLSE /?]" //49.
"獲得幫助",7); //50.
outhz(0,60,"2. [HEALLSE /RH]" //51.
"顯示十六進制數據",7); //52.
outhz(0,80,"3. [HEALLSE /RC]" //53.
"顯示字符",7); //54.
outhz(0,100,"4. [HEALLSE /B]" //55.
"備份扇區數據",7); //56.
outhz(0,120,"5. [HEALLSE /C]" //57.
"拷貝扇區數據",7); //58.
outhz(0,140,"6. [HEALLSE /M]" //59.
"搬移扇區數據",7); //60.
outhz(0,160,"7. [HEALLSE /W]" //61.
"文件數據寫入扇區",7); //62.
outhz(0,180,"8. [HEALLSE /CLE]" //63.
"扇區清零",7); //64.
outhz(0,200,"按任一鍵退出",7); //65.
getch(); //66.
closegraph(); //67.
exit(0); //68.
} //69.
//70.
if((strcmp(sh,"/rh")==0) //71.用十六進制讀扇區數據
||(strcmp(sh,"/RH")==0)&&argc==2) //72.
{ //73.
setviewport(0,20,400,40,0); //74.
outhz(0,20,"輸入扇區號:",7); //75.調用漢字顯示函數
finame(100,40); //76.調用字符處理函數
k=atol(gsh); //77.
tmfp=tmpfile(); //78.
fwrite(&k,4,1,tmfp); //79.
rewind(tmfp); //80.
fread(&s4,1,1,tmfp); //81.
fread(&s3,1,1,tmfp); //82.
fread(&s2,1,1,tmfp); //83.
fread(&s1,1,1,tmfp); //84.
fclose(tmfp); //85.
tmpnam(name); //86.
RHD(s1,s2,s3,s4,name); //87.調用讀扇區匯編子程序
fp=fopen(name,"rb"); //88.
for(i=0;i<=511;i++) //89.
{ //90.
h[i]=fgetc(fp); //91.
} //92.
fclose(fp); //93.
cleardevice(); //94.
setviewport(0,0,620,20,0); //95.
disph(); //96.調用十六進制顯示函數
setviewport(0,320,400,400,0); //97.
outhz(0,0,"上面顯示的是扇區文件" //98.
"十六進制數據:",7); //99.
fp=fopen(name,"rb"); //100.
for(i=0;i<=511;i++) //101.
{ //102.
fh[i]=fgetc(fp); //103.
} //104.
fclose(fp); //105.
remove(name); //106.
for(i=0;i<=511;i++) //107.
t+=fh[i]; //108.字節值累加
ltoa(t,th,10); //109.
outhz(0,40,"字節總算術和是:",7); //110.
outhz(0,60,"按任一鍵退出",7); //111.
outhz(140,40,th,7); //112.
} //113.
//114.
if((strcmp(sh,"/rc")==0) //115.以字符形式讀扇區數據
||(strcmp(sh,"/RC")==0)&&argc==2) //116.
{ //117.
setviewport(0,20,400,40,0); //118.
outhz(0,20,"輸入扇區號:",7); //119.
finame(100,40); //120.
k=atol(gsh); //121.
tmfp=tmpfile(); //122.
fwrite(&k,4,1,tmfp); //123.
rewind(tmfp); //124.
fread(&s4,1,1,tmfp); //125.
fread(&s3,1,1,tmfp); //126.
fread(&s2,1,1,tmfp); //127.
fread(&s1,1,1,tmfp); //128.
fclose(tmfp); //129.
tmpnam(name); //130.
RHD(s1,s2,s3,s4,name); //131.
cleardevice(); //132.
y1=0; //133.
y2=20; //134.
settextstyle(0,0,1); //135.
fp=fopen(name,"rb"); //136.
for(j=1;j<=16;j++) //137.顯示16行
{ //138.
setviewport(0,y1,600,y2,0); //139.
for(i=1;i<=32;i++) //140.顯示32列
{ //141.
ch[0]=fgetc(fp); //142.讀字符
ch[1]='\0'; //143.補結束符
outtext(ch); //144.顯示
} //145.
y1=y1+20; //146.坐標調整
y2=y2+20; //147.坐標調整
} //148.
fclose(fp); //149.
setviewport(0,320,300,400,0); //150.
outhz(0,0,"上面顯示的是扇區文件" //151.
"ASCII字符:",7); //152.
fp=fopen(name,"rb"); //153.
for(i=0;i<=511;i++) //154.
{ //155.
fh[i]=fgetc(fp); //156.
} //157.
fclose(fp); //158.
remove(name); //159.
for(i=0;i<=511;i++) //160.
t+=fh[i]; //161.
ltoa(t,th,10); //162.
outhz(0,40,"字節總算術和是:",7); //163.
outhz(0,60,"按任一鍵退出",7); //164.
outhz(140,40,th,7); //165.
} //166.
//167.
if((strcmp(sh,"/b")==0) //168.將扇區數據備份到文件
||(strcmp(sh,"/B")==0)&&argc==2) //169.
{ //170.
setviewport(0,20,400,40,0); //171.
outhz(0,20,"輸入扇區號:",7); //172.
finame(100,40); //173.
k=atol(gsh); //174.
setviewport(0,40,400,60,0); //175.
outhz(0,20,"輸入需要建立的文件名:",7); //176.
finame(190,60); //177.
strcpy(name,gsh); //178.
if((fp=fopen(gsh,"rb"))!=NULL) //179.如果打開文件成功
{ //180.
fclose(fp); //181.
setviewport(0,60,400,80,0); //182.
strcat(gsh,"文件在當前目錄下" //183.
"已經存在!"); //184.
outhz(0,20,gsh,14); //185.
outhz(0,40,"是否繼續運行" //186.
"(Y/N)?",15); //187.
c=toupper(getch()); //188.
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -