www.pudn.com > TP333.3_S886.rar > ALLMAIN.C
//******************************************** //文件名:ALLMAIN.C //功能:1. 调用显示汉字函数 // 2. 调用字符处理函数 // 3. 对扇区数据进行十六进制读、字符读、 // 备份、拷贝、搬移、写入、清零操作 //******************************************** #include//1. #include //2. #include //3. #include //4. #include //5. #include //6. #include //7. #include //8. #include //9. int outhz(int,int,char *,int); //10.对调用函数的声明 void finame(int,int); //11.对调用函数的声明 void main(int argc,char *argv[]) //12. { //13. char h[512]; //14. char sh[13]; //15. FILE *fp; //16. int i,c; //17. int cyl,head,sector; //18. int cyl1,head1,sector1; //19. extern char gsh[16]; //20.声明数组是外部变量 int gdriver=DETECT,gmode; //21. registerbgidriver(EGAVGA_driver); //22. initgraph(&gdriver,&gmode,""); //23. setbkcolor(0); //24. cleardevice(); //25. //26. if(argc==1) //27.命令行参数等于1时 { //28. outhz(0,20,"输入[HALLSE /?]获得帮助",7); //29. outhz(0,40,"按一个键退出",7); //30. getch(); //31. closegraph(); //32.关闭图形方式 exit(0); //33. } //34. strcpy(sh,argv[1]); //35. if((strcmp(sh,"/?")==0)&&argc==2) //36.比较开关字符串 { //37. outhz(0,20,"程序HALLSE.EXE" //38. "使用方法:",7); //39. outhz(0,40,"1. [HALLSE /?]" //40. "获得帮助",7); //41. outhz(0,60,"2. [HALLSE /RH]" //42. "显示十六进制数据",7); //43. outhz(0,80,"3. [HALLSE /RC]" //44. "显示字符",7); //45. outhz(0,100,"4. [HALLSE /B]" //46. "备份扇区数据",7); //47. outhz(0,120,"5. [HALLSE /C]" //48. "拷贝扇区数据",7); //49. outhz(0,140,"6. [HALLSE /M]" //50. "搬移扇区数据",7); //51. outhz(0,160,"7. [HALLSE /W]" //52. "文件数据写入扇区",7); //53. outhz(0,180,"8. [HALLSE /CLE]" //54. "扇区清零",7); //55. outhz(0,200,"按一个键退出",7); //56. getch(); //57. closegraph(); //58. exit(0); //59. } //60. //61. if((strcmp(sh,"/rh")==0) //62.比较开关字符串 ||(strcmp(sh,"/RH")==0)&&argc==2) //63. { //64. outhz(0,20,"输入柱面号:",7); //65. finame(100,20); //66. cyl=atoi(gsh); //67.将字符串转为int型的值 setviewport(0,20,400,40,0); //68. outhz(0,20,"输入磁头号:",7); //69. finame(100,40); //70. head=atoi(gsh); //71. setviewport(0,40,400,60,0); //72. outhz(0,20,"输入扇区号:",7); //73. finame(100,60); //74. sector=atoi(gsh); //75. closegraph(); //76. biosdisk(0x02,0x80,head,cyl,sector,1,h); //77. fp=tmpfile(); //78. for(i=0;i<=511;i++) //79. fputc(h[i],fp); //80. rewind(fp); //81. for(i=1;i<=512;i++) //82. { //83. c=fgetc(fp); //84. printf("%2x",c); //85. if(i%32==0) //86. printf("\n"); //87. } //88. fclose(fp); //89. printf("\n"); //90. } //91. //92. if((strcmp(sh,"/rc")==0) //93. ||(strcmp(sh,"/RC")==0)&&argc==2) //94. { //95. outhz(0,20,"输入柱面号:",7); //96. finame(100,20); //97. cyl=atoi(gsh); //98. setviewport(0,20,400,40,0); //99. outhz(0,20,"输入磁头号:",7); //100. finame(100,40); //101. head=atoi(gsh); //102. setviewport(0,40,400,60,0); //103. outhz(0,20,"输入扇区号:",7); //104. finame(100,60); //105. sector=atoi(gsh); //106. closegraph(); //107. biosdisk(0x02,0x80,head,cyl,sector,1,h); //108. for(i=1;i<=512;i++) //109. { //110. printf("%c ",h[i-1]); //111. if(i%32==0) //112. printf("\n"); //113. } //114. printf("\n"); //115. } //116. //117. if((strcmp(sh,"/b")==0) //118. ||(strcmp(sh,"/B")==0)&&argc==2) //119. { //120. outhz(0,20,"输入柱面号:",7); //121. finame(100,20); //122. cyl=atoi(gsh); //123. setviewport(0,20,400,40,0); //124. outhz(0,20,"输入磁头号:",7); //125. finame(100,40); //126. head=atoi(gsh); //127. setviewport(0,40,400,60,0); //128. outhz(0,20,"输入扇区号:",7); //129. finame(100,60); //130. sector=atoi(gsh); //131. setviewport(0,60,400,80,0); //132. outhz(0,20,"输入文件名:",7); //133. finame(100,80); //134. fp=fopen(gsh,"wb"); //135. biosdisk(0x02,0x80,head,cyl,sector,1,h); //136. for(i=0;i<=511;i++) //137. fwrite(&h[i],1,1,fp); //138. fclose(fp); //139. closegraph(); //140. } //141. //142. if((strcmp(sh,"/c")==0) //143. ||(strcmp(sh,"/C")==0)&&argc==2) //144. { //145. outhz(0,20,"输入源柱面号:",7); //146. finame(120,20); //147. cyl=atoi(gsh); //148. setviewport(0,20,400,40,0); //149. outhz(0,20,"输入源磁头号:",7); //150. finame(120,40); //151. head=atoi(gsh); //152. setviewport(0,40,400,60,0); //153. outhz(0,20,"输入源扇区号:",7); //154. finame(120,60); //155. sector=atoi(gsh); //156. biosdisk(0x02,0x80,head,cyl,sector,1,h); //157. //158. setviewport(0,60,400,80,0); //159. outhz(0,20,"输入目的柱面号:",7); //160. finame(140,80); //161. cyl1=atoi(gsh); //162. setviewport(0,80,400,100,0); //163. outhz(0,20,"输入目的磁头号:",7); //164. finame(140,100); //165. head1=atoi(gsh); //166. setviewport(0,100,400,120,0); //167. outhz(0,20,"输入目的扇区号:",7); //168. finame(140,120); //169. sector1=atoi(gsh); //170. biosdisk(0x03,0x80,head1,cyl1, //171. sector1,1,h); //172. closegraph(); //173. } //174. //175. if((strcmp(sh,"/m")==0) //176. ||(strcmp(sh,"/M")==0)&&argc==2) //177. { //178. outhz(0,20,"输入源柱面号:",7); //179. finame(120,20); //180. cyl=atoi(gsh); //181. setviewport(0,20,400,40,0); //182. outhz(0,20,"输入源磁头号:",7); //183. finame(120,40); //184. head=atoi(gsh); //185. setviewport(0,40,400,60,0); //186. outhz(0,20,"输入源扇区号:",7); //187. finame(120,60); //188. sector=atoi(gsh); //189. biosdisk(0x02,0x80,head,cyl,sector,1,h); //190. //191. setviewport(0,60,400,80,0); //192. outhz(0,20,"输入目的柱面号:",7); //193. finame(140,80); //194. cyl1=atoi(gsh); //195. setviewport(0,80,400,100,0); //196. outhz(0,20,"输入目的磁头号:",7); //197. finame(140,100); //198. head1=atoi(gsh); //199. setviewport(0,100,400,120,0); //200. outhz(0,20,"输入目的扇区号:",7); //201. finame(140,120); //202. sector1=atoi(gsh); //203. biosdisk(0x03,0x80,head1,cyl1, //204. sector1,1,h); //205. //206. for(i=0;i<=511;i++) //207. h[i]=0; //208. biosdisk(0x03,0x80,head,cyl,sector,1,h); //209. closegraph(); //210. } //211. //212. if((strcmp(sh,"/w")==0) //213. ||(strcmp(sh,"/W")==0)&&argc==2) //214. { //215. outhz(0,20,"输入文件名:",7); //216. finame(100,20); //217. if((fp=fopen(gsh,"rb"))==NULL) //218.如果打开文件失败 { //219. setviewport(0,20,400,60,0); //220. outhz(0,20,"打开文件失败!",15); //221. outhz(0,40,"按一个键退出",15); //222. getch(); //223.接收一个字符 closegraph(); //224. exit(0); //225. } //226. i=open(gsh,O_CREAT); //227. if(filelength(i)!=512) //228.若字节数不等于512 { //229. close(i); //230. setviewport(0,20,400,60,0); //231. outhz(0,20,"输入的扇区数据文件名" //232. "错误!",14); //233. outhz(0,40,"按一个键退出",14); //234. getch(); //235. closegraph(); //236. exit(0); //237. } //238. close(i); //239. //240. setviewport(0,20,400,40,0); //241. outhz(0,20,"输入柱面号:",7); //242. finame(100,40); //243. cyl=atoi(gsh); //244. setviewport(0,40,400,60,0); //245. outhz(0,20,"输入磁头号:",7); //246. finame(100,60); //247. head=atoi(gsh); //248. setviewport(0,60,400,80,0); //249. outhz(0,20,"输入扇区号:",7); //250. finame(100,80); //251. sector=atoi(gsh); //252. for(i=0;i<=511;i++) //253. fread(&h[i],1,1,fp); //254. biosdisk(0x03,0x80,head,cyl,sector,1,h); //255. fclose(fp); //256. closegraph(); //257. } //258. //259. if((strcmp(sh,"/cle")==0) //260. ||(strcmp(sh,"/CLE")==0)&&argc==2) //261. { //262. outhz(0,20,"输入柱面号:",7); //263. finame(100,20); //264. cyl=atoi(gsh); //265. setviewport(0,20,400,40,0); //266. outhz(0,20,"输入磁头号:",7); //267. finame(100,40); //268. head=atoi(gsh); //269. setviewport(0,40,400,60,0); //270. outhz(0,20,"输入扇区号:",7); //271. finame(100,60); //272. sector=atoi(gsh); //273. for(i=0;i<=511;i++) //274. h[i]=0; //275. biosdisk(0x03,0x80,head,cyl,sector,1,h); //276. closegraph(); //277. } //278. } //279. char gsh[16]; //280.定义全局数组变量