Write A C Program To Simulate Bit Stuffing and De-Stuffing
Write A C Program To Simulate Bit Stuffing and De-Stuffing
#include<stdio.h>
#include<conio.h>
#include<string.h>
void main()
int si=0,di=8,once=0;
char src[100],dest[100];
char flagbyte[]="01111110";
clrscr();
gets(src);
strcpy(dest,flagbyte);
while(src[si]!='\0')
if(src[si]=='1')
once++;
else once=0;
dest[di++]=src[si++];
if(once==5)
dest[di++]='0';
once=0;
dest[di++]='\0';
strcat(dest,flagbyte);
getch();
for(si=0,di=8,once=0;di<(strlen(dest)-8);di++)
src[si++]=dest[di];
if(dest[di]=='1')
once++;
else once=0;
if(once==5)
di++;
once=0;
src[si++]='\0';
getch();
}
2)CHARACTER STUFFING
#include<stdio.h>
#include<conio.h>
void main()
int msg[100],smsg[200],dmsg[100];
int i,mc=0,smc,j,len;
clrscr();
for(i=0;i<10;i++)
scanf("%2X",&msg[i]);
smsg[0]=DLE;
smsg[1]=STX;
mc=10;
smc=2;
for(i=0;i<mc;i++)
smsg[smc]=msg[i];
smc++;
if(msg[i]==DLE)
{
smsg[smc]=DLE;
smc++;
smsg[smc++]=DLE;
smsg[smc++]=ETX;
smsg[smc]='\0';
printf("%2X",smsg[i]);
len=smc;
for(i=0,j=2;j<(len-2);j++)
dmsg[i++]=smsg[j];
if(smsg[j]==DLE)
j++;
for(j=0;j<10;j++)
printf("%2X",dmsg[j]);
getch();
}
Figure 10.14 CRC encoder and decoder
10.59
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
#include<string.h>
char in[100],out[100],gen[100],temp[100],zero[100];
int i,ch,flag=0;
void main()
void mod();
clrscr();
for(i=0;i<=16;i++)
{
gen[i]='0';
gen[i]='\0';
gen[0]=gen[5]=gen[12]=gen[16]='1';
scanf("%s",&in);
strcpy(temp,in);
for(i=0;i<(strlen(gen)-1);i++)
zero[i]='0';
zero[i]='\0';
strcat(temp,zero);
mod();
strcpy(out,in);
strcat(out,temp);
scanf("%s",&temp);
mod();
for(i=0;temp[i]!='\0';i++)
if(temp[i]!='0')
flag=1;
}
if(flag==1)
else
getch();
void mod()
while(strlen(temp)>=strlen(gen))
if(temp[0]=='0')
for(i=0;temp[i]!='\0';i++)
temp[i]=temp[i+1];
else
for(i=0;i<strlen(gen);i++)
temp[i]=(char)(((int)temp[i]-48)^((int)gen[i]-48))+48;
}
4)dijk
#include<stdio.h>
#include<conio.h>
int n,c[10][10],d[10],s[10],src;
void read();
void write();
void dijkstra();
void main()
clrscr();
read();
dijkstra();
write();
getch();
void read()
int i,j,x,y,k,e;
scanf("%d",&n);
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
c[i][j]=999;
c[i][i]=0;
scanf("%d",&e);
for(i=1;i<=e;i++)
scnf("%d%d%d",&x,&y,&k);
c[x][y]=k;
scanf("%d",&src);
void dijkstra()
int i,j,min,u,v;
for(i=1;i<=n;i++)
d[i]=c[src][i];
s[i]=0;
}
s[src]=1;
for(i=1;i<=n;i++)
m=999;
u=-1;
for(j=1;j<=n;j++)
if(s[j]==0)
if(d[j]<min)
min=d[j];
u=j;
if(u==-1)
return;
s[u]=1;
for(v=1;v<=n;v++)
if (s[v]==0)
if(d[u]+c[u][v]<d[v])
d[v]=d[u]+c[u][v];
}
void write()
int i,j;
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
printf("%d\t",c[i][j]);
printf ("\n");
printf("shorter distance\n");
for(i=1;i<=n;i++)
if(i!=src)
printf("from %d to %d=%d\n",src,i,d[i]);
}
5)encryp_substitute
#include<ctype.h>
#include<stdio.h>
#include<conio.h>
void main()
int shift,pi,ci,mi;
char plain[100],cipher[100],msg[100];
clrscr();
gets(plain);
while(1)
scanf("%d",&shift);
if(shift<1||shift>25)
break;
for(ci=0,pi=0;plain[pi]!='\0';pi++)
if(isalpha(plain[pi]))
putchar(toupper(plain[pi]));
cipher[ci++]=((toupper(plain[pi])-'A')+shift%26)%26+'A';
cipher[ci]='\0';
while(1)
scanf("%d",&shift);
if(shift<1||shift>25)
else
break;
for(pi=0,ci=0;cipher[ci]!='\0';ci++)
plain[pi++]=((cipher[ci]-'A')+26-shift)%26+'A';
plain[pi]='\0';
for(pi=0,mi=0;plain[pi]!='\0';pi++)
msg[mi++]=tolower(plain[pi]);
}
msg[mi]='\0';
printf("after decryption\%s",plain);
getch();
6)encryp_trans
#include<stdio.h>
#include<conio.h>
#include<ctype.h>
#include<string.h>
void main()
char plain[100],cipher[100],key[100];
clrscr();
gets(plain);
transpose(plain,key,cipher,1);
printf("\n after encryption:\n%s\n",cipher);
transpose(cipher,key,plain,0);
getch();
int klen,plen,i,ch,j,k=0;
klen=strlen(key);
plen=strlen(src);
for(ch='A';ch<='Z';ch++)
for(i=0;i<klen;i++)
if(toupper(key[i])==ch)
for(j=i;j<plen;j+=klen)
if(oper!=0)
dest[k++]=src[j];
else
dest[j]=src[k++];
dest[k]='\0';
}
void getkey(char* msg, char* key)
int i;
while(1)
printf("\n%s",msg);
gets(key);
for(i=0;i<strlen(key);i++)
if(!isalpha(key[i]))
break;
if(i!= strlen(key))
else
break;
}
7)fork//Using fork function creates 2 processes and communicates between them
#include<stdio.h>
#include<stdlib.h>
#include<unistd.h>
#include<sys/wait.h>
int main(void)
pid_t childpid; // pid_t is signed integer data type which represents process ID
childpid=fork();
if(childpid==-1)
perror(failed to fork);
return1;
if (childid==0)
execl(/bin/ls,ls,-l,NULL);
return1;
if(childpid!=wait(NULL))
return1;
return0;
}
#include<stdio.h>
#include<process.h>
#include<conio.h>
int i,j,u,v,min;
int sum;
int k,src;
int t[10][2];
min=9999;
src=0;
for(i=0;i<n;i++)
for(j=0;j<n;j++)
min=cost[i][j];
src=i;
}
}
for(i=0;i<n;i++)
d[i]=cost[src][i];
s[i]=0;
p[i]=src;
s[src]=1;
sum=0;
k=0;
for(i=1;i<n;i++)
min=9999;
u=-1;
for(j=0;j<n;j++)
if(s[j]==0)
if (d[j]<=min)
min=d[j];
u=j;
}
t[k][0]=u;
t[k][1]=p[u];
k++;
sum+=cost[u][p[u]];
s[u]=1;
for(v=0;v<n;v++)
d[v]=cost[u][v];
p[v]=u;
if(sum>=9999)
else
for(i=0;i<n-1;i++)
printf("%d %d\n",t[i][0],t[i][1]);
}
void read(int n,int a[10 ][10])
int i,j;
for(i=0;i<n;i++)
for(j=0;j<n;j++)
scanf("%d",&a[i][j]);
void main()
int n,cost[10][10];
clrscr();
scanf("%d",&n);
read(n,cost);
prims(n,cost);
getch();
}
9)pc-pc
#include<stdio.h>
#include<conio.h>
#include<bios.h>
#include<stdlib.h>
#define com1 0
#define send 1
#define receive 2
void main()
char ch;
clrscr();
bioscom(0,settings,com1);
while(1)
{
if(kbhit())
ch=getch();
if(ch=='\r')
ch='\n';
putch(ch);
bioscom(send,ch,com1);
if(bioscom(3,0,com1)& rxready)
ch=bioscom(receive,0,com1);
putch(ch);
if(ch==27)
exit(1);