Advertisement
LilChicha174

Untitled

Jun 11th, 2022
142
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.70 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <dirent.h>
  3. #include <string.h>
  4. #include <stdlib.h>
  5. int n = 0;
  6. void readalldir(char *dirname, char **txtdata){
  7.     DIR *dir = opendir(dirname);
  8.     struct dirent *fi;
  9.     while(fi = readdir(dir)){
  10.         if(fi->d_type==DT_DIR && fi->d_name[0]!='.'){
  11.             int senlen = strlen(dirname);
  12.             strcat(dirname, "/");
  13.             strcat(dirname, fi->d_name);
  14.             readalldir(dirname, txtdata);
  15.             dirname[senlen] = '\0';
  16.         }
  17.         if(fi->d_type==DT_REG){
  18.             int senlen = strlen(dirname);
  19.             strcat(dirname, "/");
  20.             strcat(dirname, fi->d_name);
  21.             FILE *txt = fopen(dirname, "r");
  22.             txtdata[n] = malloc(sizeof(char) * 50);
  23.             fgets(txtdata[n], 50, txt);
  24.             strcat(txtdata[n], "\n");
  25.             n++;
  26.             fclose(txt);
  27.             dirname[senlen] = '\0';
  28.         }
  29.     }
  30.     closedir(dir);
  31. }
  32. void freetxtdata(char **txtdata){
  33.     int i;
  34.     for(i = 0; i<n; i++){
  35.         free(txtdata[i]);
  36.     }
  37.     free(txtdata);
  38. }
  39. void writefile(char **txtdata){
  40.     FILE *txt = fopen("result.txt", "w");
  41.     int i;
  42.     for(i = 0; i<n; i++){
  43.         fputs(txtdata[i], txt);
  44.     }
  45. }
  46. int comper(const void *a, const void *b){
  47.     long int aa = atoi(*((char**) a));
  48.     long int bb = atoi(*((char**) b));
  49.     if(aa > bb){
  50.         return 1;
  51.     }
  52.     if(aa < bb){
  53.         return -1;
  54.     }
  55.     else{
  56.         return 0;
  57.     }
  58. }
  59. int main(){
  60.     char dirname[50] = "./root";
  61.     char **txtdata = malloc(sizeof(char*) * 3000);
  62.     readalldir(dirname, txtdata);
  63.     qsort(txtdata, n, sizeof(char*), comper);
  64.     writefile(txtdata);
  65.     freetxtdata(txtdata);
  66.     return 0;
  67. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement