#include <fstream>
#include <iostream>
#include <sys/types.h>
#include <sys/wait.h>
#include <string.h>
#include <stdlib.h>
#include <stdio.h>
int main (int argc, char *argv[])
{
pid_t p1;
pid_t p2;
pid_t p3;
int pid[3];
//char fArray1;
//char fArray2;
//char fArray3;
if ( argc != 4) // argc should be 2 for correct execution
{
printf("please enter 4 arguments\n");
printf("Ex: a.out file1 file2 file3\n");
exit(0);
}
p1=fork();
if(p1==0)
{
char chArray[51] = {'a','A','b','B','c','C', 'd', 'D', 'd', 'e', 'E', 'f', 'F','g', 'G', 'h', 'H', 'i','I','j','J', 'k', 'K', 'l', 'L', 'm', 'M', 'o', 'O',
'p', 'P', 'q', 'Q', 'r', 'R', 's', 'S', 't', 'T', 'u', 'U', 'v', 'V', 'w', 'W', 'x', 'X', 'y', 'Y', 'z', 'Z'} ;
int countArray[51];
FILE *file1=fopen(argv[1], "r");
char fArray1;
for(int i=0;i<51;i++)
countArray[i]=0;
if(file1 == NULL)
{
printf("Cannot open file.\n");
exit(1);
}
else
{
printf("File1 opened successfully.\n");
do
{
fArray1 = fgetc(file1);
for(int i=0; i< sizeof(chArray); i++)
{
if(chArray[i] == fArray1)
{
countArray[i]+=1;
}
}
}while(fArray1 != EOF);
{
fclose (file1);
}
//printf("Number of characters in %s is %d", argv[1]);
for(int j=0; j< sizeof(chArray); j++)
{
printf("File1 contains %c", chArray
[j
]);
printf(" %d\n", countArray
[j
]);
}
fclose(file1);
}
exit(0);
}
else
{
pid[0]=p1;
p2=fork();
if(p2 == 0)
{
char chArray2[51] = {'a','A','b','B','c','C', 'd', 'D', 'd', 'e', 'E', 'f', 'F','g', 'G', 'h', 'H', 'i','I','j','J', 'k', 'K', 'l', 'L', 'm', 'M', 'o', 'O',
'p', 'P', 'q', 'Q', 'r', 'R', 's', 'S', 't', 'T', 'u', 'U', 'v', 'V', 'w', 'W', 'x', 'X', 'y', 'Y', 'z', 'Z'} ;
int countArray2[51];
FILE *file2=fopen(argv[2], "r");
char fArray2;
for(int i=0;i<51;i++)
countArray2[i]=0;
if(file2 == NULL)
{
printf("Cannot open file2.\n");
exit(1);
}
else
{
printf("File2 opened successfully.\n");
do
{
fArray2 = fgetc(file2);
for(int i=0; i< sizeof(chArray2); i++)
{
if(chArray2[i] == fArray2)
{
countArray2[i]+=1;
}
}
}while(fArray2 != EOF);
{
fclose (file2);
}
}
for(int j=0; j< sizeof(chArray2); j++)
{
printf("File2 contains %c", chArray2
[j
]);
printf(" %d\n", countArray2
[j
]);
}
fclose(file2);
}
exit(0);
}
else
{
pid[1]=p2;
p3=fork();
if(p3 == 0)
{
char chArray3[51] = {'a','A','b','B','c','C', 'd', 'D', 'd', 'e', 'E', 'f', 'F','g', 'G', 'h', 'H', 'i','I','j','J', 'k', 'K', 'l', 'L', 'm', 'M', 'o', 'O',
'p', 'P', 'q', 'Q', 'r', 'R', 's', 'S', 't', 'T', 'u', 'U', 'v', 'V', 'w', 'W', 'x', 'X', 'y', 'Y', 'z', 'Z'} ;
int countArray3[51];
FILE *file3=fopen(argv[3], "r");
char fArray3;
for(int i=0;i<51;i++)
countArray3[i]=0;
if(file3 == NULL)
{
printf("Cannot open file3.\n");
exit(1);
}
else
{
printf("File3 opened successfully.\n");
do
{
fArray3 = fgetc(file3);
for(int i=0; i< sizeof(chArray3); i++)
{
if(chArray3[i] == fArray3)
{
countArray3[i]+=1;
}
}
}while(fArray3 != EOF);
{
fclose (file3);
}
for(int j=0; j<sizeof(chArray3); j++)
{
printf("File3 contains %c", chArray3
[j
]);
printf(" %d\n", countArray3
[j
]);
}
fclose(file3);
}
exit(0);
}
else
{
pid[2]=p3;
}
}
}
waitpid(pid[0], NULL, 0);
waitpid(pid[1], NULL, 0);
waitpid(pid[2], NULL, 0);
return(0);
}