====== Funciones, recursión, entrada, salida y funciones de sistema ====== ===== Funciones que podrían ser utilizadas en esta actividad ===== fopen, fclose, fgetc, fprintf, fputc, fread, fwrite, stat, fscanf ===== Instrucciones ===== ==== Programa Examinador de directorios ==== * Cree un árbol de archivos de la siguiente forma en su directorio home: root_dir root_dir/d1 root_dir/d1/e1.txt root_dir/d1/e2.bak root_dir/d1/e3.bal root_dir/d1/dd1/e4.bak root_dir/d1/dd1/e5.txt root_dir/d2/e6.bal root_dir/d2/e7.txt root_dir/d2/dd2/e8.bak root_dir/d2/dd2/e9.txt root_dir/e10.txt root_dir/e11.bak * Ejecute ls -Ral root_dir. Copie el resultado de este comando en un archivo e inclúyalo en el informe de esta actividad. * A cada archivo e?.??? ingrese como su contenido interno "Este archivo se llama: " seguido de el mismo nombre del archivo. * Construya un programa que abra el archivo root_dir/d1/e1.txt y muestre su contenido en pantalla. Agregue este programa al informe. * Modifique el programa anterior para que lea el contenido de root_dir/d1/e1.txt, lo copie en un nuevo archivo llamado root_dir/result y además agregue una línea que diga: "el directorio actual es: root_dir/d1" (el directorio actual realmente, debe ser extraído del nombre completo del archivo leído). Agregue este programa al informe. * Utilizando los programas anteriores y recursión, construya un programa que examine todo el árbol de archivos de arriba y copie la lista de archivos (con su directorio) de todos los archivos terminados en .txt en pantalla y en el archivo "root_dir/result". Agregue este programa al informe. (opcional 20%) ==== Algunas funciones de ayuda ==== Estas funciones pueden contener errores y estar incompletas (no se chequean errores). Usted es responsable de corregirlas o completarlas. int get_len(char *data) { int len=0; while(data[len]!='\0'){ len++; } return(len); } char * get_dir(char *filename) { char *output; output=calloc(256, sizeof(char)); int last_dir_pos=0; int i; for (i=0; i<256; i++) { if (filename[i]=='/') { last_dir_pos=i; } else { if (filename[i]=='\0') { break; } else { if (filename[i]=='\n') { break; } } } } if ((i==256) || (last_dir_pos==0)) { output[0]='\0'; } else { for (i=0; i