I am working on a c program to read from a txt file and sort the strings.
data.txt:
jk ef ab cd bc gh fg ij hi de 
Here is my code:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <ctype.h>
int cmp(const void *p1, const void *p2) {
    return strcmp(*(const char **)p1,  *(const char **)p2);
}
int main() {
    FILE *f = fopen("data.txt", "r");
    char s[255][255];
    char tmp[255];
    int n = 0;
    while (!feof(f)) {
        fscanf(f, "%s", tmp);
        strcpy(s[n], tmp);
        n++;
    }
    fclose(f);
    qsort(s, n, sizeof(char *), cmp);
    int i = 0;
    for (; i < n; i++) {
        printf("%s ", s[i]);
    }
    return EXIT_SUCCESS;
} 
I ran the code on Ubuntu and it breaks on a segfault. Believe this segfault happened in qsort and I could not figure out why.
Anyone can give me some suggestions?
 
     
     
     
    