CRC

 #include<stdio.h>


int main()
{
    int m[20],p[20],d[10],i,j,k,len,rem[10],divlen;
    int m1[20],rem1[10];

    printf("\n Enter the length of divisor\n");
    scanf("%d",&divlen);
    printf("\n Enter the divisor:\n");
    for(i=0;i<divlen;i++)
    {
     scanf("%d",&d[i]);
    }
    printf("\n Enter the length of data\n");
    scanf("%d",&len);
    printf("\n Enter the data:\n");
    for(i=0;i<len;i++)
    {
     scanf("%d",&m[i]);
     p[i]=m[i];
    }
    for(i=len;i<len+(divlen-1);i++)
    {
     m[i]=0;
    }
    printf("\n The append value is: ");
    for(i=0;i<len+(divlen-1);i++)
    {
     printf("%d",m[i]);
    }

// ***********X-OR operation*************//

    for(i=0;i<len;i++)
      {
     if(m[i]==1)
       {
      for(j=0;j<divlen;j++)
        {
       if(m[i+j]==d[j])
        rem[j]=0;
       else
        rem[j]=1;
        }
    for(k=0;k<divlen;k++)
    {
     m[i+k]=rem[k];
    }
    }
    else
    {
      for(k=0;k<divlen;k++)
      {
       rem[k]=m[i+k];
      }
    }
    }
   
    printf("\n");
    printf("\n CRC =");
    for(i=1;i<divlen;i++)
    {
     printf("%d",rem[i]);
    }
//------------------------------------------------------------
       printf("\n\rAt the receiver end\n");

    printf("\n The complete data + CRC received is:");
    for(i=0;i<len+(divlen-1);i++)
    {
     scanf("%d",&m1[i]);
    }

      for(i=0;i<len;i++)
    {
     if(m1[i]==1)
     {
      for(j=0;j<divlen;j++)
      {
       if(m1[i+j]==d[j])
        rem1[j]=0;
       else
        rem1[j]=1;
      }
    for(k=0;k<divlen;k++)
    {
     m1[i+k]=rem1[k];
    }
    }
    else
    {
      for(k=0;k<divlen;k++)
      {
       rem1[k]=m1[i+k];
      }
    }
    }
   
    printf("\n");
    printf("\n CRC =");
    j=0;
    for(i=1;i<divlen;i++)
    {
     printf("%d",rem1[i]);
     j=j+rem1[i];
    }

    if(j==0)
      printf("\n There is no error\n");
    else
      printf("\n There is error\n");

    return(1);

   
}

Comments