C program to Find the Longest Line in a File
Problem:
Write a C program to find longest line in a file. Further also find the longest line from console input until user enters end of file key (Ctrl+D on Linux) while on terminal.C program to find longest line in a file
#include<stdio.h>
#include<string.h>
int main()
{
FILE *file;
char line[200],fileName[50],max[200]=" ";
printf("\n Enter the file name:- ");
scanf(" %s",fileName);
file=fopen(fileName,"r");
if(file!=NULL)
{
while(fgets(line,sizeof(line),file)!=NULL) // read whole line
{
if(strlen(max)<strlen(line))
strcpy(max,line);
}
printf("\n Longest line in file is:- ");
printf("\n %s \n",max);
fclose(file);
}
else
{
perror(fileName);
}
return 0;
}
Output of C program:
Now we are going to find the longest line from console input.
Algorithm to find longest line from console:
- Start
- Initialize counter variables to count lines,words and total characters.
- Accept characters until end of file character is not given using while loop.
- Increment counter to count total characters every time.
- If '\n' i.e. newline character is read, increment counter for lines.
- Do not include '\n' character in counting total characters.
- Display all the counts.
- Stop
C Program to find longest line from standard input:
#include<stdio.h>
int main()
{
char ch;
int line=0,word=0,count=0,maxchar=0,icount=0;
printf("\n");
while((ch=getchar())!=EOF)
{
++count;
++icount;
if(ch=='\n')
{
++line;
--icount;
if(icount>maxchar)
{
maxchar=icount;
}
icount=0;
}
}
printf("\n %d characters are written ",count);
printf("\n \n %d characters are there in the longest line",maxchar);
printf("\n \n %d lines are read \n \n",line);
return 0;
}
/* Output of above code:-
Hi i am Abhijit
16 characters are written
15 characters are there in the longest line
1 lines are read
*/