资源简介

计算机网络课程设计 计算校验和

资源截图

代码片段和文件信息

#include
#include
int main(int argcchar*argv[])//指针数组作为主函数,用于函数带参数输入
{   FILE *fp;
  char ch;
  unsigned char chrlchrh;
  unsigned int count=0checksum=0chr=0;
  unsigned long int sum=0;
    if((fp=fopen(argv[1]“r“))==NULL)
  {
printf(“\n\n File can‘t be opened“);
exit(1);
  }
  printf(“\n\nthe type of output:data---sum\n\n“);
  while(1)
  {
if((ch=fgetc(fp))!=EOF)
{
count++;
if(ch!=‘ ‘)
{
if(count%12==0)
printf(“\n“);
if(ch>=‘0‘&&ch<=‘9‘)
ch-=‘0‘;
else
if(ch>=‘a‘&&ch<=‘f‘)
ch=ch-‘a‘+10;
else
if(ch>=‘A‘&&ch<=‘F‘)
ch=ch-‘A‘+10;
//计算8位的累加值将奇数位累加到长整型sum的15~8位偶数位累加到低8~0位
//避免了数据个数为奇偶的处理操作
if(count%2==1)
chrh=ch<<4;
else
{
chrl=ch&0x0f;
chr=chrh|chrl;
if(count%4==2)
sum+=chr<<8;
else
if(count%4==0)
sum+=chr;
printf(“%x--%lx   “chrsum);
}
}
else
{
count--;
}
}
else
{
if (count % 2 == 1 && count%4 !=3)
{     chrl=ch&0x00;
           chr=chrh|chrl;
  sum+=chr<<8;
     printf(“%x--%lx   “chrsum);
}
if(count%4==3)
{
 chrl=ch&0x00;
          chr=chrh|chrl;
  sum+=chr;
  printf(“%x--%lx   “chrsum);
}

break;
}
  }
  if(sum>>16)
  checksum=(sum>>16)+(sum&0x0000ffff);
  checksum=checksum&0x0000ffff;  
     printf(“\n\nsum:%lx---checksum:%x“sumchecksum);
     checksum = 0xffff - checksum;
      printf(“\n\nsum:%lx---checksum:%x“sumchecksum);
  printf(“\n\nsource:argc=%d\targv=%s\n“argcargv[1]);
  fclose(fp);
}

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件         14  2012-04-21 14:48  jiaoyan.txt

     文件     119808  2012-04-21 15:13  设计报告2.doc

     文件       1704  2012-04-21 15:11  check.c

----------- ---------  ---------- -----  ----

               121526                    3


评论

共有 条评论