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;
}