I'm pretty new to C and someone "challenged" me to try and create a sorting program using C. I come from languages that are higher-level where doing something like this is easier, but I guess the lower-level intricacies are way over my head. I haven't implemented the sorting yet, because I've ran across an obstacle (just one of many) along the way.
Anyways, here is the code I have so far:
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
    FILE *unsortedFile; /* prepare file variable */
    char lineBuffer[100]; /* prepare variable for each line */
    char *listOfLines[100]; /* prepare line array variable to be sorted */
    int n = 0; 
    int i;
    if (argc == 2) /* if a file has been given */
    {
        unsortedFile = fopen(argv[1], "r"); /* open it readonly */
        if (unsortedFile == NULL) /* if it couldn't open */
        {
            printf("Couldn't open the file %s\n", argv[1]);
            printf("Does it exist?\n");
            return -1; /* stop the program here, return non-zero for error */
        }
        printf("original file:\n\n");
        while (fgets(lineBuffer, sizeof(lineBuffer), unsortedFile))
        {
            printf("%s", lineBuffer);
            listOfLines[n] = lineBuffer; /* store line buffer to the array */
            n = ++n; /* increase n for the next array element */
        }
        printf("\nLines to be sorted: %d\n", n);
        for (i = 0; i < n; i++)
        {
            printf("%s", listOfLines[i]);
        }
    } else /* if no or too many args provided */
    {
        printf("\nArgument error - you either didn't supply a filename\n");
        printf("or didn't surround the filename in quotes if it has spaces\n\n");
        return -1; /* return non-zero for error */
    }
}
At this point, you're probably busy vomiting over the messiest spaghetti code you've ever seen... but anyways, the issue occurs with that while statement, I guess. The original file prints to the console fine, but I don't think each line is being stored to listOfLines.
Here is what's in file.txt, the file I am supplying as an argument to the program:
zebra
red
abacus
banana
And here is the output of the program:
dustin@DESKTOP-033UL9B:/mnt/c/Users/Dustin/projects/c/sort$ ./sort file.txt
original file:
zebra
red
abacus
banana
Lines to be sorted: 4
banana
banana
banana
banana
dustin@DESKTOP-033UL9B:/mnt/c/Users/Dustin/projects/c/sort$
Looks like the last line of the file is the only one being stored to listOfLines? What could cause this behavior?
Thanks in advance!
 
     
    