Implement CRC
The program will take a sequence of binary data bits, and a divider as input. And gives the resultant data with CRC as output. (Where, divider < binary data bits)
Sample Input:
Data: 10110
Divider: 1101
Sample Output:
Modified data: 10110000
Data Send: 10110101
CRC bit: 101
Sample Output
Enter data: 1001 Enter divisor: 1011 Input Data With Zero(s): 1001000 CRC Bit: 110 Modified Data: 1001110
Source Code
#include<stdio.h>
#include<stdlib.h>
void main()
{
int i, j, k, l, numOfZero, dataLen;
char divisor[100], data[100], remainder[100], divisorClone[100], dataClone[100], crc[100];
printf("Enter data: ");
scanf("%s", data);
printf("Enter divisor: ");
scanf("%s", divisor);
for(i = 0; data[i] != '\0'; i++);
dataLen = i;
for(i = 0; divisor[i] != '\0'; i++);
numOfZero = i;
for(i = 0; i < numOfZero-1; i++)
{
data[dataLen+i] = '0';
}
printf("\nInput Data With Zero(s): %s\n", data);
strcpy(dataClone, data);
for(i = 0; i < dataLen; i++)
{
strcpy(divisorClone, divisor);
if(data[i] < divisor[0])
{
for(l = 0; l < numOfZero; l++)
{
divisor[l] = '0';
}
divisor[l] = '\0';
}
for(j = i, k = 0; j < numOfZero+i; j++, k++)
{
if(data[j] == divisor[k])
{
remainder[j] = '0';
}
else
{
remainder[j] = '1';
}
}
strcpy(divisor, divisorClone);
remainder[j] = dataClone[j];
remainder[j+1] = '\0';
strcpy(data, remainder);
}
strcpy(data, remainder);
for(i = dataLen, j = 0; i < dataLen+numOfZero; i++)
{
dataClone[i] = data[i];
crc[j++] = data[i];
}
crc[j-1] = '\0';
dataClone[i-1] = '\0';
printf("\nCRC Bit: %s\n\nModified Data: %s\n\n", crc, dataClone);
}
Sample Output
Enter data: 10111011 Enter divisor: 1001 Input Data With Zero(s): 10111011000 CRC Bit: 110 Modified Data: 10111011110