C语言注解使读者读起来更易理解

以下代码可以帮我打上中文注解吗?


// Page.h
#ifndef _PAGE_H
#define _PAGE_H

class CPage
{
public:
    int m_nPageNumber,
        m_nPageFaceNumber,
        m_nCounter,
        m_nTime;
};
#endif


//PageControl.h

#ifndef _PAGECONTROL_H
#define _PAGECONTROL_H
class CPageControl
{
public:
    int m_nPageNumber,m_nPageFaceNumber;
    class CPageControl * m_pNext;
};
#endif




// Memory.h
#ifndef _MEMORY_H
#define _MEMORY_H


class CMemory
{

public:
    CMemory();
    void initialize(const int nTotal_pf);
    void FIFO(const int nTotal_pf);
    void LRU(const int nTotal_pf);
    void NUR(const int nTotal_pf);
    void OPT(const int nTotal_pf);
private:
    vector _vDiscPages;
    vector _vMemoryPages;
    CPageControl *_pFreepf_head,*_pBusypf_head,*_pBusypf_tail;
    vector _vMain,_vPage,_vOffset;
    int _nDiseffect;
};

CMemory::CMemory():_vDiscPages(TOTAL_VP),
                   _vMemoryPages(TOTAL_VP),
                   _vMain(TOTAL_INSTRUCTION),
                   _vPage(TOTAL_INSTRUCTION),
                   _vOffset(TOTAL_INSTRUCTION)
{
    int S,i,nRand;
    srand(getpid()*10);
    nRand=rand()%32767;
    
    S=(float)319*nRand/32767+1;
    for(i=0;i4)
    {
        _vMain[i]=S;
        _vMain[i+1]=_vMain[i]+1;
        nRand=rand()%32767;
        _vMain[i+2]=(float)_vMain[i]*nRand/32767;
        _vMain[i+3]=_vMain[i+2]+1;
        nRand=rand()%32767;
        S=(float)nRand *(318-_vMain[i+2] )/32767+_vMain[i+2]+2;
    }
    for(i=0;i_vPage[i]=_vMain[i]/10;
        _vOffset[i]=_vMain[i]%10;
        _vPage[i]%=32;
    }
}
void CMemory::initialize(const int nTotal_pf)
{
        int ix;
        _nDiseffect=0;
for(ix=0;ix<_vDiscPages.size();ix++)
        {
        _vDiscPages[ix].m_nPageNumber=ix;
        _vDiscPages[ix].m_nPageFaceNumber=INVALID;
        _vDiscPages[ix].m_nCounter=0;
        _vDiscPages[ix].m_nTime=-1;
    }
    for(ix=1;ix_vMemoryPages[ix-1].m_pNext=&_vMemoryPages[ix];
        _vMemoryPages[ix-1].m_nPageFaceNumber=ix-1;
    }
    _vMemoryPages[nTotal_pf-1].m_pNext=NULL;
    _vMemoryPages[nTotal_pf-1].m_nPageFaceNumber=nTotal_pf-1;
    _pFreepf_head=&_vMemoryPages[0];
}
void CMemory::FIFO(const int nTotal_pf)
{
    int i;
    CPageControl *p;
    initialize(nTotal_pf);
    _pBusypf_head=_pBusypf_tail=NULL;
    for(i=0;iif(_vDiscPages[_vPage[i]].m_nPageFaceNumber==INVALID)
        {
          _nDiseffect+=1;
          if(_pFreepf_head==NULL)  //no empty pages
        {
          p=_pBusypf_head->m_pNext;
          _vDiscPages[_pBusypf_head->m_nPageNumber].m_nPageFaceNumber=INVALID;
          _pFreepf_head=_pBusypf_head;
          _pFreepf_head->m_pNext=NULL;
          _pBusypf_head=p;
        }
          p=_pFreepf_head->m_pNext;
          _pFreepf_head->m_pNext=NULL;
          _pFreepf_head->m_nPageNumber=_vPage[i];
 _vDiscPages[_vPage[i]].m_nPageFaceNumber=_pFreepf_head->m_nPageFaceNumber;
          if(_pBusypf_tail==NULL)
         _pBusypf_head=_pBusypf_tail=_pFreepf_head;
          else
        {
          _pBusypf_tail->m_pNext=_pFreepf_head;
          _pBusypf_tail=_pFreepf_head;
            }
          _pFreepf_head=p;
         }    
        }
         cout<<"FIFO: "<<1-(float)_nDiseffect/320;
}
void CMemory::LRU(const int nTotal_pf)
{
  int i,j,nMin,minj,nPresentTime(0);
  initialize(nTotal_pf);
  for(i=0;iif(_vDiscPages[_vPage[i]].m_nPageFaceNumber==INVALID)
    {
          _nDiseffect++;
          if(_pFreepf_head==NULL)
          {
          nMin=32767;
          for(j=0;j//get the subscribe of the least used page
            //after the recycle iMin is the number of times
            //used of the least used page while minj is its subscribe
         if(nMin>_vDiscPages[j].m_nTime&&_vDiscPages[j].m_nPageFaceNumber!=INVALID)
          {
            nMin=_vDiscPages[j].m_nTime; 
            minj=j;
          }
          _pFreepf_head=&_vMemoryPages[_vDiscPages[minj].m_nPageFaceNumber];
          _vDiscPages[minj].m_nPageFaceNumber=INVALID;
          _vDiscPages[minj].m_nTime=-1;
          _pFreepf_head->m_pNext=NULL;
        }
      _vDiscPages[_vPage[i]].m_nPageFaceNumber=_pFreepf_head->m_nPageFaceNumber;
      _vDiscPages[_vPage[i]].m_nTime=nPresentTime;
      _pFreepf_head=_pFreepf_head->m_pNext;
      }
      else
    _vDiscPages[_vPage[i]].m_nTime=nPresentTime;
            nPresentTime++;
      }
  cout<<"LRU: "<<1-(float)_nDiseffect/320;
}
void CMemory::NUR(const int nTotal_pf)
{
  int i,j,nDiscPage,nOld_DiscPage;
  bool bCont_flag;
       initialize(nTotal_pf);
  nDiscPage=0;
  for(i=0;iif(_vDiscPages[_vPage[i]].m_nPageFaceNumber==INVALID)
        {
           _nDiseffect++;
           if(_pFreepf_head==NULL)
          {
          bCont_flag=true;
          nOld_DiscPage=nDiscPage;
          while(bCont_flag)
         {
  if(_vDiscPages[nDiscPage].m_nCounter==0&&_vDiscPages[nDiscPage].m_nPageFaceNumber!=INVALID)
            bCont_flag=false;
          else
            {
              nDiscPage++;
              if(nDiscPage==TOTAL_VP) nDiscPage=0;
              if(nDiscPage==nOld_DiscPage)
            for(j=0;j_vDiscPages[j].m_nCounter=0;
            }
        }
          _pFreepf_head=&_vMemoryPages[_vDiscPages[nDiscPage].m_nPageFaceNumber];
          _vDiscPages[nDiscPage].m_nPageFaceNumber=INVALID;
          _pFreepf_head->m_pNext=NULL;
        }
      _vDiscPages[_vPage[i]].m_nPageFaceNumber=_pFreepf_head->m_nPageFaceNumber;
      _pFreepf_head=_pFreepf_head->m_pNext;
    }
      else
    _vDiscPages[_vPage[i]].m_nCounter=1;
      if(i%CLEAR_PERIOD==0)
    for(j=0;j_vDiscPages[j].m_nCounter=0;
    }
     cout<<"NUR:"<<1-(float)_nDiseffect/320;
}
void CMemory::OPT(const int nTotal_pf)
{
  int i,j,max,maxpage,nDistance,vDistance[TOTAL_VP];
       initialize(nTotal_pf);
       for(i=0;iif(_vDiscPages[_vPage[i]].m_nPageFaceNumber==INVALID)
         {
        _nDiseffect++;
      if(_pFreepf_head==NULL)
        {
          for(j=0;jif(_vDiscPages[j].m_nPageFaceNumber!=INVALID)
          vDistance[j]=32767;
        else
          vDistance[j]=0;
          nDistance=1;
          for(j=i+1;jif((_vDiscPages[_vPage[j]].m_nPageFaceNumber!=INVALID)&&(vDistance[_vPage[j]]==32767) )
            vDistance[_vPage[j]]=nDistance;
          nDistance++;
        }
          max=-1;
          for(j=0;jif(maxmax=vDistance[j];
            maxpage=j;
          }
          _pFreepf_head=&_vMemoryPages[_vDiscPages[maxpage].m_nPageFaceNumber];
          _pFreepf_head->m_pNext=NULL;
          _vDiscPages[maxpage].m_nPageFaceNumber=INVALID;
        }
              _vDiscPages[_vPage[i]].m_nPageFaceNumber=_pFreepf_head->m_nPageFaceNumber;
         _pFreepf_head=_pFreepf_head->m_pNext;
          }
        }
  cout<<"OPT:"<<1-(float)_nDiseffect/320;
}
#endif






  • 帮你找了个相似的问题, 你可以看下: https://ask.csdn.net/questions/221871
  • 这篇博客你也可以参考下:C数据结构 文件输出错误乱码是什么情况?
  • 除此之外, 这篇博客: C语言实现文件读写中的 键盘读入字符串写到文件中,再从文件读出显示在控制台 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • #include<stdio.h>
    #include<string.h>
    int main()
    {
    	FILE *fp;
    	char string[6];//方括号中是几就输入几个字符串
    	if( (fp=fopen("file.txt","w"))==NULL )
    	{
    		printf("cannot open file");
    		return 0;
    	}
    	while(strlen(gets(string)) > 0)
    	{
    		fputs(string,fp);
    		fputs("\n",fp);
    	}
    	fclose(fp);
    
    	if( (fp=fopen("file.txt","r"))==NULL)
    	{
    		printf("cannot open file\n");
    		return 0;
    	}
    	while(fgets(string,6,fp)!=NULL)
    	{
    		fputs(string,stdout);//系统自动打开stdout文件
    	}
    	fclose(fp);
    }