Guys i got this program working Fine on windows its output is just like how i want it, perfect! But when i go to a linux machine the output is not how it should be, whats wrong with it, i believe its something with the logic of my function, but i can't find it. Could anyone help me rewrite it, or give ideas please.

For example:
The original file has:



Jack Spratt
could eat no fat.
His wife
could eat no lean.


The output file will should look like:


ttarpS kcaJ
.taf on tae dluoc
efiw siH
.nael on tae dluoc



But IN LINUX I GET:

ttarpS kcaJ

.taf on tae dluoc

efiw siH
.nael on tae dluoc


I need to get rid of those blank lines, and format the output as is on windows.
These are the codes i am working with:

Code:
#include <stdio.h> 
#include <string.h> 

      
// Our function declaration saying it takes one string pointer and  returns one string pointer.  
char * flipstring(char *stringtoflip);  
   
int main() {  
//  Strings to hold our lines (forward and backward)  
    char  string[256];  
    char flipped[256];  
   
//  Our file pointers (one in and one out)  
    FILE * infile;  
    FILE * outfile;  
   
  // Open files to valid  txt files  
    infile = fopen("input.txt","r");  
   
    outfile = fopen("output.txt","w");  
   
  // Loop  through the input file reading each line up to 256 chars  
   
    while (fgets(string,256,infile) != NULL) {  
    printf("The  value read in is: %s\n", string);  
   
  // Flip the  string and copy it to our "flipped" string  
   
    strcpy(flipped,flipstring(string));  
   
  // Write  "flipped" to output  
  printf("The value written is:  %s\n",flipped);  
  fputs(flipped,outfile);  
  fputs("\n",outfile);}
   
  // Close files  
  fclose(infile);  
  fclose(outfile);  
   
  return 0;  
 }  
    
 // Flips strings by taking incoming   string, loop in reverse  
  // and write each char to reverse  string. Return reverse string.  
char * flipstring(char *stringtoflip) {  
  
  static char reverse[256];  
    
    
  int j = 0;  
  int i= strlen(stringtoflip)-1;
    
   // Loop through each char of our  string in reverse  
   for( i ;i>=0; i--)  
   {  
   // If it is a newline, just  ignore for now.  
   if (stringtoflip[i] != '\n') {  
    
  reverse[j]=stringtoflip[i];  
   j++;  
   }  
    
  }  
   
   // Terminate the new reverse string.  
   reverse[j] = '\0';  
    
   // Return reverse  string back to main()  
    return reverse;  
 }