Sois tan brillantes como un agujero negro y el doble de denso
Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.
Mostrar Mensajes Menú
#include <stdio.h>
#include <ctype.h>
#include <string.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>
#include <dirent.h>
#define NORMAL "\x1B[0m"
#define GREEN "\x1B[32m"
#define BLUE "\x1B[34m"
#define RED "\x1b[32m"
/* Función que procesa la lectura un archivo */
void procesoArchivo(char *archivo);
void mostrarFiltrado(char * path);
int main(int argc, char *argv[]){
int opcion=0;
char *path; //Es para la ruta
char *type;
//char *name;
int size;
int maxdepth;
int niveles;
unsigned num;
// Con ello evitamos fallos de violacion de segmentacion. Se le asigna un espacio en memoria.
type = (char*)malloc(1024);
path = (char*)malloc(1024);
name = (char*)malloc(1024);
for(int i; i<argc; i++){
if(strcmp(argv[i], "-maxdepth") == 0){ //Si la cadena que tengo en la posicion i es igual a "x"
//Devolverá 0 en caso de ser iguales caracter a caracter
if(i == argc-1){ //Si contador es igual al ultimo numero de parametros muestra error
fprintf(stderr, "Error. Modo de empleo: mifind [camino] [opciones]\n");
exit(EXIT_FAILURE);
}
opcion=1;
} else if(strcmp(argv[i], "-type") == 0){
if(i == argc-1){
fprintf(stderr, "Error. Modo de empleo: mifind [camino] [opciones]\n");
exit(EXIT_FAILURE);
}
opcion=2;
} else if(strcmp(argv[i], "-name") == 0){
if(i == argc-1){
fprintf(stderr, "Error. Modo de empleo: mifind [camino] [opciones]\n");
exit(EXIT_FAILURE);
}
opcion=3;
} else if(strcmp(argv[i], "-size") == 0){
if(i == argc-1){
fprintf(stderr, "Error. Modo de empleo: mifind [camino] [opciones]\n");
exit(EXIT_FAILURE);
}
opcion=4;
}else{
switch(opcion){
case 0: //Ruta
if(i != 1){
fprintf(stderr, "Error. Modo de empleo: mifind [camino] [opciones]\n");
exit(EXIT_FAILURE);
}
strcpy(path, argv[i]);
break;
case 1: //Maxdepth
maxdepth <- atoi(argv[i]); //Convierte una cadena a un entero
niveles = maxdepth;
if(! niveles){ //Si niveles es vacio if(niveles != NULL)
fprintf(stderr, "Error. Modo de empleo: mifind [camino] [opciones]\n");
exit(EXIT_FAILURE);
}
if(niveles < 0){ //Si niveles es menor que 0
fprintf(stderr, "Error. Modo de empleo: mifind [camino] [opciones]\n");
exit(EXIT_FAILURE);
}
break;
case 2: //type
//Si la cadena que haya en la posicion i es distinta a la mencionada da un error
if(strcmp(argv[i], "d") != 0 && strcmp(argv[i], "f") != 0){
fprintf(stderr, "Error. Modo de empleo: mifind [camino] [opciones]\n");
exit(EXIT_FAILURE);
}
//opcion = 3;
strcpy(type, argv[i]);
break;
case 3: //name
break;
case 4: //size
break;
}
}
}
/* Con un puntero a DIR abriremos el directorio */
//Cuando solo tengo la ruta
DIR *dir;
if (argv[1] != NULL){
dir = opendir (argv[1]);
if (dir == NULL){
printf("\nDirectorio ""%s"" No valido!\n\n",argv[1] );
closedir (dir);
return 0;
}
else {
dir = opendir (argv[1]);
path = argv[1];
}
}
else {
dir = opendir (".");
}
/* en *ent almacena información sobre el archivo que se esta "obteniendo" a cada momento */
struct dirent *ent;
/* Leyendo uno a uno todos los archivos que hay */
while ((ent = readdir (dir)) != NULL)
{
/* Nos devolvera el directorio actual (.) y el anterior (..) */
if ( (strcmp(ent->d_name, ".")!=0 ) && (strcmp(ent->d_name, "..")!=0 ))
{
/* Una vez tenemos el archivo, lo pasamos a una funcion para procesarlo. */
procesoArchivo(ent->d_name);
}
}
closedir (dir);
return EXIT_SUCCESS;
mostrarFiltrado(path);
}
void procesoArchivo(char *archivo)
{
/* Para "procesar", o al menos, hacer algo con el archivo, vamos a decir su tamaño en bytes */
/* */
FILE *fich;
long ftam;
fich=fopen(archivo, "r");
if (fich)
{
fseek(fich, 0L, SEEK_END);
ftam=ftell(fich);
fclose(fich);
/* Si todo va bien, decimos el tamaño */
printf ("%30s (%ld bytes)\n", archivo, ftam);
}
else
/* Si ha pasado algo, solo decimos el nombre */
printf ("%30s\n", archivo);
}
/* Mostrar Contenido Recursivo */
void mostrarFiltrado(char * path, char *type, int maxdepth)
{
DIR * d = opendir(path);
if(d==NULL) return;
struct dirent * dir;
while ((dir = readdir(d)) != NULL)
{
if(dir-> d_type != DT_DIR)
printf("%s%s\n",BLUE, dir->d_name);
else
if(dir -> d_type == DT_DIR && strcmp(dir->d_name,".")!=0 && strcmp(dir->d_name,"..")!=0 )
{
printf("%s\n", dir->d_name);
char d_path[255];
printf(d_path, "%s/%s", path, dir->d_name);//imprime la ruta /mi_directorio
mostrarFiltrado(d_path);
}
}
current_path = type(dir);
while (current_path != NULL){
if(current_path.type == type){
if(strcmp(argv[i], "f") == 0 || ! type ){
printf(current_path);
} else if(strcmp(argv[i], "d") == 0 || ! type){
printf(current_path);
}
}
if(current_path.type == dir && current_depth < maxdepth){
mostrarFiltrado(current_path, type, maxdepth, current_depth + 1);
}
current_path = type(dir);
}
closedir(d);
}
#include <stdio.h>
#include <ctype.h>
#include <string.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>
#include <dirent.h>
#define NORMAL "\x1B[0m"
#define GREEN "\x1B[32m"
#define BLUE "\x1B[34m"
#define RED "\x1b[32m"
/* Función que procesa la lectura un archivo */
void procesoArchivo(char *archivo);
void mostrarFiltrado(char * path);
int main(int argc, char *argv[]){
int opcion=0;
char *path; //Es para la ruta
char *type;
char *name;
int size;
int maxdepth;
int niveles;
unsigned num;
// Con ello evitamos fallos de violacion de segmentacion. Se le asigna un espacio en memoria.
type = (char*)malloc(1024);
path = (char*)malloc(1024);
name = (char*)malloc(1024);
for(int i; i<argc; i++){
if(strcmp(argv[i], "-maxdepth") == 0){ //Si la cadena que tengo en la posicion i es igual a "x"
//Devolverá 0 en caso de ser iguales caracter a caracter
if(i == argc-1){ //Si contador es igual al ultimo numero de parametros muestra error
fprintf(stderr, "Error. Modo de empleo: mifind [camino] [opciones]\n");
exit(EXIT_FAILURE);
}
opcion=1;
} else if(strcmp(argv[i], "-type") == 0){
if(i == argc-1){ //DUDA: utilizo == ?
fprintf(stderr, "Error. Modo de empleo: mifind [camino] [opciones]\n");
exit(EXIT_FAILURE);
}
opcion=2;
} else if(strcmp(argv[i], "-name") == 0){
if(i == argc-1){
fprintf(stderr, "Error. Modo de empleo: mifind [camino] [opciones]\n");
exit(EXIT_FAILURE);
}
opcion=3;
} else if(strcmp(argv[i], "-size") == 0){
if(i == argc-1){
fprintf(stderr, "Error. Modo de empleo: mifind [camino] [opciones]\n");
exit(EXIT_FAILURE);
}
opcion=4;
}else{
switch(opcion){
case 0: //Ruta
if(i != 1){
fprintf(stderr, "Error. Modo de empleo: mifind [camino] [opciones]\n");
exit(EXIT_FAILURE);
}
strcpy(path, argv[i]);
break;
case 1: //Maxdepth
maxdepth <- atoi(argv[i]); //Convierte una cadena a un entero
niveles = maxdepth;
if(! niveles){ //Si niveles es vacio if(niveles != NULL)
fprintf(stderr, "Error. Modo de empleo: mifind [camino] [opciones]\n");
exit(EXIT_FAILURE);
}
if(niveles < 0){ //Si niveles es menor que 0
fprintf(stderr, "Error. Modo de empleo: mifind [camino] [opciones]\n");
exit(EXIT_FAILURE);
}
break;
case 2: //type
//Si la cadena que haya en la posicion i es distinta a la mencionada da un error
if(strcmp(argv[i], "d") != 0 && strcmp(argv[i], "f") != 0){
fprintf(stderr, "Error. Modo de empleo: mifind [camino] [opciones]\n");
exit(EXIT_FAILURE);
}
//opcion = 3;
strcpy(type, argv[i]);
break;
case 3: //name
break;
case 4: //size
break;
}
}
}
/* Con un puntero a DIR abriremos el directorio */
//Cuando solo tengo la ruta
DIR *dir;
if (argv[1] != NULL){
dir = opendir (argv[1]);
if (dir == NULL){
printf("\nDirectorio ""%s"" No valido!\n\n",argv[1] );
closedir (dir);
return 0;
}
else {
dir = opendir (argv[1]);
path = argv[1];
}
}
else {
dir = opendir (".");
}
/* en *ent almacena información sobre el archivo que se esta "obteniendo" a cada momento */
struct dirent *ent;
/* Leyendo uno a uno todos los archivos que hay */
while ((ent = readdir (dir)) != NULL)
{
/* Nos devolvera el directorio actual (.) y el anterior (..) */
if ( (strcmp(ent->d_name, ".")!=0 ) && (strcmp(ent->d_name, "..")!=0 ))
{
/* Una vez tenemos el archivo, lo pasamos a una funcion para procesarlo. */
procesoArchivo(ent->d_name);
}
}
closedir (dir);
return EXIT_SUCCESS;
mostrarFiltrado(path);
}
void procesoArchivo(char *archivo)
{
/* Para "procesar", o al menos, hacer algo con el archivo, vamos a decir su tamaño en bytes */
/* */
FILE *fich;
long ftam;
fich=fopen(archivo, "r");
if (fich)
{
fseek(fich, 0L, SEEK_END);
ftam=ftell(fich);
fclose(fich);
/* Si todo va bien, decimos el tamaño */
printf ("%30s (%ld bytes)\n", archivo, ftam);
}
else
/* Si ha pasado algo, solo decimos el nombre */
printf ("%30s\n", archivo);
}
/* Mostrar Contenido Recursivo */
void mostrarFiltrado(char * path)
{
DIR * d = opendir(path);
if(d==NULL) return;
struct dirent * dir;
while ((dir = readdir(d)) != NULL)
{
if(dir-> d_type != DT_DIR)
printf("%s%s\n",BLUE, dir->d_name);
else
if(dir -> d_type == DT_DIR && strcmp(dir->d_name,".")!=0 && strcmp(dir->d_name,"..")!=0 )
{
printf("%s%s\n",GREEN, dir->d_name);
char d_path[255];
sprintf(d_path, "%s/%s", path, dir->d_name);//imprime la ruta /mi_directorio
mostrarFiltrado(d_path);
}
}
closedir(d);
}
allipson@allipson-Ubuntu:~/Escritorio/practicas_SOP$ ./myfind2.o . -type d
myfind.o (16816 bytes)
myfind.c (0 bytes)
.ejemplo_41.swp (1024 bytes)
myfind2.c (4827 bytes)
fich_new (9223372036854775807 bytes)
ProyectoP1Allipson(9223372036854775807 bytes)
Nuevo.c (628 bytes)
Nuevo (634 bytes)
ProyectoP1Allipson.zip (29409 bytes)
Nuevo_dir (9223372036854775807 bytes)
funciona (9223372036854775807 bytes)
myfind2.o (16856 bytes)
allipson@allipson-Ubuntu:~/Escritorio/practicas_SOP$ ./myfind2.o . -maxdepth 2
myfind.o (16816 bytes)
myfind.c (0 bytes)
.ejemplo_41.swp (1024 bytes)
myfind2.c (4827 bytes)
fich_new (9223372036854775807 bytes)
ProyectoP1Allipson.zip (9223372036854775807 bytes)
Nuevo.c (628 bytes)
Nuevo (634 bytes)
ProyectoP1Allipson.zip (29409 bytes)
Nuevo_dir (9223372036854775807 bytes)
funciona (9223372036854775807 bytes)
myfind2.o (16856 bytes)
#include <stdio.h>
#include <ctype.h>
#include <string.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>
#include <dirent.h>
#define NORMAL "\x1B[0m"
#define GREEN "\x1B[32m"
#define BLUE "\x1B[34m"
#define RED "\x1b[32m"
/* Función que procesa la lectura un archivo */
void procesoArchivo(char *archivo);
void mostrarFiltrado(char * path);
int main(char *argv[], int argc){
int opcion=0;
char *path; //Es para la ruta
char *type;
char *name;
int size;
int maxdepth;
int niveles;
unsigned num;
// Con ello evitamos fallos de violacion de segmentacion. Se le asigna un espacio en memoria.
type = (char*)malloc(1024);
path = (char*)malloc(1024);
name = (char*)malloc(1024);
for(int i; i<argc; i++){
if(strcmp(argv[i], "-maxdepth") == 0){ //Si la cadena que tengo en la posicion i es igual a " "
//Devolverá 0 en caso de ser iguales caracter a caracter
//if( ){ //Si contador es igual al ultimo numero de parametros muestra error
// fprintf(stderr, "Error. Modo de empleo: mifind [camino] [opciones]\n");
// exit(EXIT_FAILURE);
//}
opcion=1;
} else if(strcmp(argv[i], "-type") == 0){
if( i == argc){
fprintf(stderr, "Error. Modo de empleo: mifind [camino] [opciones]\n");
exit(EXIT_FAILURE);
}
opcion=2;
} else if(strcmp(argv[i], "-name") == 0){
if( i == argc){
fprintf(stderr, "Error. Modo de empleo: mifind [camino] [opciones]\n");
exit(EXIT_FAILURE);
}
opcion=3;
} else if(strcmp(argv[i], "-size") == 0){
if( i == argc){
fprintf(stderr, "Error. Modo de empleo: mifind [camino] [opciones]\n");
exit(EXIT_FAILURE);
}
opcion=4;
}else{
switch(opcion){
case 0: //Ruta
if(i != 1){ ///DUDA si va i o argv[i]
fprintf(stderr, "Error. Modo de empleo: mifind [camino] [opciones]\n");
exit(EXIT_FAILURE);
}
path=argv[i];
break;
case 1: //Maxdepth
maxdepth <- atoi(argv[i]); //Convierte una cadena a un entero
niveles = maxdepth;
if(! niveles){ //Si niveles es vacio if(niveles != NULL)
fprintf(stderr, "Error. Modo de empleo: mifind [camino] [opciones]\n");
exit(EXIT_FAILURE);
}
if(niveles < 0){ //Si niveles es menor que 0
fprintf(stderr, "Error. Modo de empleo: mifind [camino] [opciones]\n");
exit(EXIT_FAILURE);
}
break;
case 2: //type
//Si la cadena que haya en la posicion i es distinta a la mencionada da un error
if(strcmp(argv[i], "d") != 0){
fprintf(stderr, "Error. Modo de empleo: mifind [camino] [opciones]\n");
exit(EXIT_FAILURE);
}
if(strcmp(argv[i], "f") != 0){
fprintf(stderr, "Error. Modo de empleo: mifind [camino] [opciones]\n");
exit(EXIT_FAILURE);
}
//opcion = 3;
type=argv[i];
break;
case 3: //name
name=argv[i];
break;
case 4: //size
break;
}
}
}
/* Con un puntero a DIR abriremos el directorio */
//Cuando solo tengo la ruta
DIR *dir;
if (argv[1] != NULL){
dir = opendir (argv[1]);
if (dir == NULL){
printf("\nDirectorio ""%s"" No valido!\n\n",argv[1] );
closedir (dir);
return 0;
}
else {
dir = opendir (argv[1]);
path = argv[1];
}
}
else {
dir = opendir (".");
}
/* en *ent almacena información sobre el archivo que se esta "obteniendo" a cada momento */
struct dirent *ent;
/* Leyendo uno a uno todos los archivos que hay */
while ((ent = readdir (dir)) != NULL)
{
/* Nos devolvera el directorio actual (.) y el anterior (..) */
if ( (strcmp(ent->d_name, ".")!=0 ) && (strcmp(ent->d_name, "..")!=0 ))
{
/* Una vez tenemos el archivo, lo pasamos a una funcion para procesarlo. */
procesoArchivo(ent->d_name);
}
}
closedir (dir);
return EXIT_SUCCESS;
mostrarFiltrado(path);
}
void procesoArchivo(char *archivo)
{
/* Para "procesar", o al menos, hacer algo con el archivo, vamos a decir su tamaño en bytes */
/* */
FILE *fich;
long ftam;
fich=fopen(archivo, "r");
if (fich)
{
fseek(fich, 0L, SEEK_END);
ftam=ftell(fich);
fclose(fich);
/* Si todo va bien, decimos el tamaño */
printf ("%30s (%ld bytes)\n", archivo, ftam);
}
else
/* Si ha pasado algo, solo decimos el nombre */
printf ("%30s\n", archivo);
}
/* Mostrar Contenido Recursivo */
void mostrarFiltrado(char * path)
{
DIR * d = opendir(path);
if(d==NULL) return;
struct dirent * dir;
while ((dir = readdir(d)) != NULL)
{
if(dir-> d_type != DT_DIR)
printf("%s%s\n",BLUE, dir->d_name);
else
if(dir -> d_type == DT_DIR && strcmp(dir->d_name,".")!=0 && strcmp(dir->d_name,"..")!=0 )
{
printf("%s%s\n",GREEN, dir->d_name);
char d_path[255];
sprintf(d_path, "%s/%s", path, dir->d_name);//imprime la ruta /mi_directorio
mostrarFiltrado(d_path);
}
}
closedir(d);
}
#include <stdio.h>
#include <ctype.h>
#include <string.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>
#include <dirent.h>
#define NORMAL "\x1B[0m"
#define GREEN "\x1B[32m"
#define BLUE "\x1B[34m"
#define RED "\x1b[32m"
/* Función que procesa la lectura un archivo */
void procesoArchivo(char *archivo);
void mostrarContenido(char * path);
int main(char **argv, int argc){
int opcion=0;
char *path; //Es para la ruta
char *type;
char *name;
int size;
int maxdepth;
int niveles;
unsigned num;
// Con ello evitamos fallos de violacion de segmentacion. Se le asigna un espacio en memoria.
type = malloc(1024);
path = malloc(1024);
name = malloc(1024);
for(int i; i<argc; i++){
if(strcmp(argv[i], "-maxdepth") == 0){ //Si la cadena que tengo en la posicion i es igual a " "
//Devolverá 0 en caso de ser iguales caracter a caracter
if( i == argc){ //Si contador es igual al ultimo numero de parametros muestra error
fprintf(stderr, "Error. Modo de empleo: mifind [camino] [opciones]\n");
exit(EXIT_FAILURE);
}
opcion=1;
} else if(strcmp(argv[i], "-type") == 0){
if( i == argc){
fprintf(stderr, "Error. Modo de empleo: mifind [camino] [opciones]\n");
exit(EXIT_FAILURE);
}
opcion=2;
} else if(strcmp(argv[i], "-name") == 0){
if( i == argc){
fprintf(stderr, "Error. Modo de empleo: mifind [camino] [opciones]\n");
exit(EXIT_FAILURE);
}
opcion=3;
} else if(strcmp(argv[i], "-size") == 0){
if( i == argc){
fprintf(stderr, "Error. Modo de empleo: mifind [camino] [opciones]\n");
exit(EXIT_FAILURE);
}
opcion=4;
}else{
switch(opcion){
case 0: //Ruta
if(i != 1){ ///DUDA si va i o argv[i]
fprintf(stderr, "Error. Modo de empleo: mifind [camino] [opciones]\n");
exit(EXIT_FAILURE);
}
path=argv[i];
break;
case 1: //Maxdepth
maxdepth <- atoi(argv[i]); //Convierte una cadena a un entero
niveles = maxdepth;
if(! niveles){ //Si niveles es vacio if(niveles != NULL)
fprintf(stderr, "Error. Modo de empleo: mifind [camino] [opciones]\n");
exit(EXIT_FAILURE);
}
if(niveles < 0){ //Si niveles es menor que 0
fprintf(stderr, "Error. Modo de empleo: mifind [camino] [opciones]\n");
exit(EXIT_FAILURE);
}
break;
case 2: //type
//Si la cadena que haya en la posicion i es distinta a la mencionada da un error
if(strcmp(argv[i], "d") != 0){
fprintf(stderr, "Error. Modo de empleo: mifind [camino] [opciones]\n");
exit(EXIT_FAILURE);
}
if(strcmp(argv[i], "f") != 0){
fprintf(stderr, "Error. Modo de empleo: mifind [camino] [opciones]\n");
exit(EXIT_FAILURE);
}
//opcion = 3;
type=argv[i];
break;
case 3: //name
name=argv[i];
break;
case 4: //size
break;
}
}
}
/* Con un puntero a DIR abriremos el directorio */
//Cuando solo tengo la ruta
DIR *dir;
if (argv[1] != NULL){
dir = opendir (argv[1]);
if (dir == NULL){
printf("\nDirectorio ""%s"" No valido!\n\n",argv[1] );
closedir (dir);
return 0;
}
else {
dir = opendir (argv[1]);
path = argv[1];
}
}
else {
dir = opendir (".");
}
/* en *ent almacena información sobre el archivo que se esta "obteniendo" a cada momento */
struct dirent *ent;
/* Leyendo uno a uno todos los archivos que hay */
while ((ent = readdir (dir)) != NULL)
{
/* Nos devolvera el directorio actual (.) y el anterior (..) */
if ( (strcmp(ent->d_name, ".")!=0 ) && (strcmp(ent->d_name, "..")!=0 ))
{
/* Una vez tenemos el archivo, lo pasamos a una funcion para procesarlo. */
procesoArchivo(ent->d_name);
}
}
closedir (dir);
return EXIT_SUCCESS;
//mostrarFiltrado(path, name, type, size, maxdepth);
mostrarFiltrado(path);
}
void procesoArchivo(char *archivo)
{
/* Para "procesar", o al menos, hacer algo con el archivo, vamos a decir su tamaño en bytes */
/* */
FILE *fich;
long ftam;
fich=fopen(archivo, "r");
if (fich)
{
fseek(fich, 0L, SEEK_END);
ftam=ftell(fich);
fclose(fich);
/* Si todo va bien, decimos el tamaño */
printf ("%30s (%ld bytes)\n", archivo, ftam);
}
else
/* Si ha pasado algo, solo decimos el nombre */
printf ("%30s\n", archivo);
}
//void mostrarFiltrado(char *path, char *name, char *type, int size, int maxdepth){
//}
/* Mostrar Contenido Recursivo */
void mostrarFiltrado(char * path)
{
DIR * d = opendir(path);
if(d==NULL) return;
struct dirent * dir;
while ((dir = readdir(d)) != NULL)
{
if(dir-> d_type != DT_DIR)
printf("%s%s\n",BLUE, dir->d_name);
else
if(dir -> d_type == DT_DIR && strcmp(dir->d_name,".")!=0 && strcmp(dir->d_name,"..")!=0 )
{
printf("%s%s\n",GREEN, dir->d_name);
char d_path[255];
sprintf(d_path, "%s/%s", path, dir->d_name);
mostrarFiltrado(d_path);
}
//if(strcmp(argv[2], "-type") == 0){
// Funcion_type(dir, type);
//}
}
closedir(d);
}