title: Using fgets to read strings from file in C
body: <p>I am trying to read strings from a file that has each string on a new line but I think it reads a newline character once instead of a string and I don't know why. If I'm going about reading strings the wrong way please correct me.</p>
  
  <pre><code>    i=0;
  F1 = fopen("alg.txt", "r"); 
  F2 = fopen("tul.txt", "w"); 
       if(!feof(F1)) {
       do{ //start scanning file
       fgets(inimene[i].Enimi, 20, F1);
       fgets(inimene[i].Pnimi, 20, F1);
       fgets(inimene[i].Kood, 12, F1);
       printf("i=%d\nEnimi=%s\nPnimi=%s\nKaad=%s",i,inimene[i].Enimi,inimene[i].Pnimi,inimene[i].Kood);
       i++;}
       while(!feof(F1));};
  /*finish getting structs*/
  </code></pre>
  
  <p>The printf is there to let me see what was read into what and here is the result</p>
  
  <pre><code>i=0
  Enimi=peter
  
  Pnimi=pupkin
  
  Kood=223456iatb i=1
  Enimi=
  
  Pnimi=masha
  
  Kaad=gubkina
  i=2
  Enimi=234567iasb
  
  Pnimi=sasha
  
  Kood=dudkina
  </code></pre>
  
  <p>As you can see after the first struct is read there is a blank(a newline?) onct and then everything is shifted. I suppose I could read a dummy string to absorb that extra blank and then nothing would be shifted, but that doesn't help me understand the problem and avoid in the future.</p>
  
  <p>Edit 1: I know that it stops at a newline character but still reads it. I'm wondering why it doesn't read it during the third string and transfers to the fourth string instead of giving the fourth string the fourth line of the source but it happens just once. 
  The file is formatted like this by the way</p>
  
  <pre><code>peter 
  pupkin 
  223456iatb 
  masha 
  gubkina 
  234567iasb 
  sasha 
  dudkina 
  123456iasb 
  </code></pre>