#include #include #include #define LEN 81 #define LINES 100 char *strdup(const char *s) { unsigned len = strlen(s); char *p = malloc(len + 1); return p ? strcpy(p, s) : NULL; } int compara(char **p1, char **p2) { return strcmp(*p1, *p2); } int main(int argc, char *argv[]) { FILE *f; if (argc != 2) { fprintf(stderr, "utilizare: program numefisier\n"); return 1; } if (!(f = fopen(argv[1], "r"))) { perror("eroare la deschidere"); return 1; } int i = 0, size = 0; // char text[LINES][LEN]; // char *text[LINES]; char **text = NULL; char line[LEN]; while (fgets(line, LEN, f)) { if (i >= size) { char **t1 = realloc(text, (size+=10)*sizeof(char *)); if (t1) text = t1; else break; } text[i++] = strdup(line); } int linii = i; qsort(text, linii, sizeof(char *), compara); for (i = 0; i < linii; ++i) { fputs(text[i], stdout); free(text[i]); } // while (fgets(line, LEN, f)) // fputs(line, stdout); fclose(f); return 0; }