Estou a fazer um trabalho de comandos em linux, e tenho uma parte no comando ls para imprimir os ficheiros por ordem de nome e não estou conseguindo fazer o bubblesorte.Neste proxima codigo tenho as variaveis base.
#include <stdio.h>#include <stdlib.h>
#include <string.h>
#include <errno.h>
#include <dirent.h>
#include <time.h>
#include <sys/stat.h>
#include <sys/types.h>
struct linha {
int numero_linha;
char conteudo[350];
struct linha *linha_seg;
struct linha *linha_ant;
};
typedef struct linha * LINHA;
typedef struct linha ** PLINHA; // Apontador para Apontador para Linhar, para ser usado na funcao Sort para o sort.c
LINHA primeira_linha, ultima_linha;
char comandos[30][10];
char ficheiros[25][350];
int total_comandos;
int total_ficheiros;
}
Neste proximo codigo tenho a funcao ls
void ls(char nomedirectorio[80]) {
DIR *dp;
struct dirent *dirp;
FILE *file;
char ficheiro[100];
int contador_pagina = 1;
int contador_print = 0;
int diferenca = 0;
int numero_espacos;
if ((dp = opendir(nomedirectorio)) == NULL ) {
fprintf(stderr, "Erro1: Directorio não Existente!\n");
exit(1);
}
while ((dirp = readdir(dp)) != NULL ) {
if(existe_arg("l")) { //Faz a listagem longa com indicacao nome, dimensao e data do ficheiro
file = fopen(dirp -> d_name, "r");
strcpy(ficheiro, dirp -> d_name);
printf("Nome: %s\t Dimensao: %d", ficheiro, tamanho(file));
date(ficheiro);
fclose(file);
}
if(existe_arg("p")) { //Faz pausa a pagina a pagina
if((contador_pagina % 30) == 0) {
printf("\n\n\n\n Prima Enter Para Ver o Resto do Ficheiro\n");
getchar();
}
printf("%s\n", dirp -> d_name);
contador_pagina++;
}
if(existe_arg("c")) { //Lista por colunas os ficheiros contidos na directoria
if((contador_print % 3) == 0) {
printf("\n");
}
diferenca = 50 - strlen(dirp -> d_name);
printf("%s", dirp -> d_name);
contador_print++;
for(numero_espacos = 0; numero_espacos < diferenca; numero_espacos++) {
printf(" ");
}
}
if (exist_arg("on")) <--- BUBBLESORT AQUI ON= ORDER NAME.
if(!existe_arg("l") && !existe_arg("on") && !existe_arg("od") && !existe_arg("os") && !existe_arg("p") && !existe_arg("c")) {
printf("%s\n", dirp -> d_name);
}
}
if(existe_arg("c")) {
printf("\n");
}
closedir(dp);
}
Question
Ankani
Ola boa tarde,
Estou a fazer um trabalho de comandos em linux, e tenho uma parte no comando ls para imprimir os ficheiros por ordem de nome e não estou conseguindo fazer o bubblesorte.Neste proxima codigo tenho as variaveis base.
Neste proximo codigo tenho a funcao lsSera que da para ajudar?
Obrigado
Link to comment
Share on other sites
1 answer to this question
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.