I wanted to learn how fgets works. For this I wrote code to print "hi" before every line, which is going to be printed from an another text file named input.txt using fgets.
But it is showing 2 his between consecutive lines instead of 1. I can't understand why?
My code
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
    char singleline[150];//storing each line of input.txt as singleline arrays.
    FILE *fp;//file pointer named fp.
    fp=fopen("input.txt","r");//reading the text file input.txt
    while (!feof(fp)){
        fgets(singleline,150,fp);
        printf("hi\n");// to check that before each line hi is printed?
        puts(singleline);
    }
    return 0;
}
My text file
rohit sharma,batsman,1,35.0,40.0,2200,20,95  
viru,batsman,2,28.0,45.0,1800,02,75   
suresh raina,batsman,3,38.0,35.0,2300,15,98  
suryaky,batsman,4,30.0,0.0,500,0,10   
abd,batsman,5,37.2,0.0,1200,0,50
dhoni,batsman,6,45.2,0.0,2100,0,85  
albie,allrounder,7,24.87,27.65,945,80,86  
ashwin,bowler,8,8.82,24.37,150,82,85  
naraine,bowler,9,6.67,16.94,40,67,49  
johnson,bowler,10,12.25,21.33,98,45,33  
starc,bowler,11,14.17,28.71,85,14,14
Output
hi   
rohit sharma,batsman,1,35.0,40.0,2200,20,95   
hi
hi  
viru,batsman,2,28.0,45.0,1800,02,75   
(till the end)  
johnson,bowler,10,12.25,21.33,98,45,33  
hi 
hi  
starc,bowler,11,14.17,28.71,85,14,14
What is the error here?
 
     
    