I have a file with an unknown number of strings and each of these strings is of an unknown length. I would like to make each line of the file its own string in an array of strings.
I tried to use dynamic allocation in a char** array, but I don't think I'm approaching this correctly.
Below is the code I have tried. It's getting stuck in an infinite loop, and I can't figure out why. (The text file I'm reading from ends with a line break, by the way.)
#include <getopt.h> //for getopts 
#include <sys/stat.h> //to do file stat
#include <dirent.h>
#include <string.h>
#include <pwd.h>
#include <unistd.h>
#include <stdio.h>
#include <fcntl.h> //user macros
#include <stdlib.h>
#include <stdbool.h>
#include <libgen.h>
#include <errno.h>
int main(int argc, char *argv[]) {
    //storing the filename inside string
    char* filename = argv[1];
    FILE *fp1 = fopen(filename, "r");
    if (fp1 == NULL) {
        fprintf(stderr, "Error: Cannot open '%s'. No such file or directory.\n", filename);
        return EXIT_FAILURE;
    }
    
    /**
     * we begin by getting the number of numbers in the file
     * the number of numbers = number of lines = number of line breaks
     */
    size_t numNumbers = 0;
    // while((fscanf(fp1, "%*[^\n]"), fscanf(fp1, "%*c")) != EOF){
    //     numNumbers = numNumbers + 1;
    // }
    char c;
    while((c = fgetc(fp1)) != EOF){
        if(c == '\n'){
            numNumbers++;
        }
    }
    fclose(fp1); 
    FILE *fp2 = fopen(filename, "r");
    char** arrayOfStrings = malloc(numNumbers * sizeof(char*));
    for(int i = 0; i < numNumbers; i++) {
        int len = 0;
        if(((c = fgetc(fp1)) != '\n') && (c != EOF)){
            len++;
        }
        arrayOfStrings[i] = malloc(len * sizeof(char));
    }
    printf("hello1\n");
    //for(int i = 0; i < numNumbers; i++){
    //    fscanf(fp2, "%s", (arrayOfStrings[i]));
    //}
    fclose(fp2);
    // for(int i = 0; i < numNumbers; i++){
    //     fprintf(stdout, "%s", arrayOfStrings[i]);
    // }
    return 0;
}
(I'm very new to C, so please go easy on me!)
 
     
    