真正的C编程牛人来
源代码如下:#include<stdio.h>
#include<dos.h>
#include<stdlib.h>
#include<string.h>
/*定义结构体MCB表示内存控制块*/
struct MCB
{
unsigned char type;
unsigned int owner;
unsigned int size;
unsigned char unused[3];
unsigned char dos[8];
};
unsigned char far *vector,vectdat[1024];
unsigned int seg,i;
FILE *fp;
struct MCB *mcb;
/*定义函数ClearMem*/
void ClearMem()
{
fp=fopen("e:\\clrmen.dat","rb");
seg=(unsigned int)getw(fp);
mcb=(struct MCB far *)MK_FP(seg,0);
while(mcb->type=='M')
{
mcb->owner=0;
mcb=(struct MCB far *)MK_FP(FP_SEG(mcb)+mcb->size+1,0);
}
vector=(unsigned char far *)MK_FP(0,0);
disable();
for(i=0;i<1024;i++)
*(vector+i)=fgetc(fp);
enable();
fclose(fp);
_AX=0x3;
geninterrupt(0x10);
}
/*定义函数SaveMem*/
void SaveMem()
{
fp=fopen("e:\\clrmen.dat","wb");
seg=*(unsigned int *)MK_FP(_psp,0x2c)-1;
mcb=(struct MCB far *)MK_FP(seg,0);
putw(seg,fp);
vector=(unsigned char far *)0x0;
for(i=0;i<1024;i++)
fputc(*(vector+i),fp);
}
int main(int argc,char *argv[])
{
puts("***************************************");
puts("| This program will clear your memory |");
puts("***************************************");
mcb->size=0;
if(argc==1)
{
ClearMem();
printf("Clear your memory successfully!\n");
return 1;
}
if(argc==2)
{
if(strcmp(argv[1],"-s")==0)
{
SaveMem();
printf("Save record Successfully!\n");
return 1;
}
}
printf("Clear your memory failly!");
return 0;
}
这个源代码是从网上下载的,看不明白,百分之九十多都看不懂,因为没有学过,上学时发的那个<<C语言程序设计教程>>,内容都是最基础的教程,最后一章就是内容深一些的东西了,就是文件了,教了文件的打开,关闭和输入输出。就算是把这本书弄透了,我感觉还是弄不懂源代码是什么意思,因为就没有学到过。而我想问的就是:把这个基础的书学完后,再学什么才能看懂这些代码,我知道<<C语言程序设计教程>>只是学C的最基础的书,那学完这本书后再买什么样的书才能学到或理解这个源代码里的东西呢?这就好象是,你的书是小学的课本,就算是把小学的书精通了,也还是看不懂初中的书,因为没有学到嘛!所以学完小学的,就要学初中,问:学过这本基础的<<C语言程序设计教程>>后再学习那些书,希望不要说C++吧,望高人指点(虽然我知道现在还差的远呢!)!