Write a C program that takes a file name as a command line parameter and sorts a set of integers stored in the file (use any sorting method). You can assume that the file will always be there in the current directory and that it will always contain a set of integers(maximum no. of integers is 1000). The sorted output is written to the display and the input file is left unchanged. Compile the C file into an executable named “sort1″. Now write a C program that implements a command called “sort” that you will invoke from the shell prompt. The syntax of the command is “sort “. When you type the command, the command opens a new xterm window, and then sorts the integers stored in the file using the program “sort1″. Look up the man pages for xterm, fork and the different variations of exec* calls (such as execv, execve, execlp etc.) to do this assignment.
#include<stdio.h>
int main(int argc, char *argv[])
{
{
FILE *fp1;
int A[1000],T[1000];
int j,i=0;
int A[1000],T[1000];
int j,i=0;
/* check that we have a file name specified as a command-line argument */
if (argc<2)
{
printf(“\nPlease enter filename as argument when running this program.\n”);
printf(“For example: listprog file.txt\n\n”);
return -1;
}
if (argc<2)
{
printf(“\nPlease enter filename as argument when running this program.\n”);
printf(“For example: listprog file.txt\n\n”);
return -1;
}
fp1= fopen(argv[1], “r”);
if (!fp1)
{
printf(“\nUnable to open file: %s; exiting.\n\n”, argv[1]);
return -2;
}
if (!fp1)
{
printf(“\nUnable to open file: %s; exiting.\n\n”, argv[1]);
return -2;
}
for(j=0;(j<1000)&&(feof(fp1)== 0);j++)
{
if(feof(fp1)== 0)
{
fscanf(fp1,”%d”,&A[j]);
i++;
}
else
printf(“\nError”);
}
{
if(feof(fp1)== 0)
{
fscanf(fp1,”%d”,&A[j]);
i++;
}
else
printf(“\nError”);
}
sort(A,i);
display(A,i);
fclose(fp1);
display(A,i);
fclose(fp1);
return 0;
}
}
display(int A[],int n)
{
int i;
for(i=0;i<n;i++)
printf(“\n%d”,A[i]);
{
int i;
for(i=0;i<n;i++)
printf(“\n%d”,A[i]);
}
sort(int a[],int n)
{
int i,j,t;
for(i=n-2;i>=0;i–)
{
for(j=0;j<=i;j++)
{
int i,j,t;
for(i=n-2;i>=0;i–)
{
for(j=0;j<=i;j++)
{
if(a[j]>a[j+1])
{
t=a[j];
a[j]=a[j+1];
a[j+1]=t;
}
}
if(a[j]>a[j+1])
{
t=a[j];
a[j]=a[j+1];
a[j+1]=t;
}
}
}
}
Comments
Post a Comment
Your Comment Here!.....