1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150
|
// Nomes_Duplicados.cpp : main project file.
#include "stdafx.h"
#include "math.h"
#include "stdio.h"
#include "windows.h"
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
char**lista;
char**lista2;
int lista_limite;
int lista_cont;
void incluir_nome(char* in)
{
int novo_limite,i;
lista[lista_cont] = new char[strlen(in)+1];
strcpy(lista[lista_cont],in);
if(lista_cont == lista_limite)
{
novo_limite = lista_limite+100;
char** lista_aux = new char*[lista_limite+1];
for (i=0;i<=lista_limite;i++) lista_aux[i] = lista[i];
delete lista;
lista = new char*[novo_limite+1];
for (i=0;i<=lista_limite;i++) lista[i] = lista_aux[i];
delete lista_aux;
lista_limite = novo_limite;
}
lista_cont++;
return;
}
void erro(int i)
{
cout << "\n\n ERRO! \n";
if(i==1) cout << "Nome de um arquivo muito grande!\n";
if(i==2) cout << "Nenhuma pasta foi ifnromada ao programa\n";
while(true);
return;
}
int tamanho(WCHAR in[])
{
int i=0;
while(true)
{
if(in[i]==0) break;
i++;
if(i==2000) erro(1);
}
return (i+1);
}
void copiar(char* aqui, WCHAR esse[])
{
int i=0;
while(true)
{
if(esse[i]==0) break;
aqui[i]=esse[i];
i++;
}
aqui[i] = '\0';
return;
}
void incluir(char caminho[])
{
int i,mem_tam,tam_caminho;
char asterisco[] = "\\*";
tam_caminho = strlen(caminho);
WIN32_FIND_DATA fd;
HANDLE hFind;
char* nome;
char* nome_completo;
wchar_t* wtext = new wchar_t[tam_caminho];
mbstowcs(wtext, caminho, tam_caminho+1);//Plus null
LPWSTR a = wtext;
hFind = FindFirstFile(a, &fd);
FindNextFile(hFind,&fd);
while(FindNextFile(hFind,&fd))
{
mem_tam = tamanho(fd.cFileName);
nome = new char[mem_tam+3];
nome_completo = new char[mem_tam+tam_caminho+3];
copiar(nome,fd.cFileName);
strncpy(nome_completo,caminho,tam_caminho-1);
nome_completo[tam_caminho-1] = '\0';
strcat(nome_completo,nome);
//Verifica se é uma pasta
if(fd.dwFileAttributes == 16)
{
strcat(nome_completo,&asterisco[0]);
incluir(nome_completo);
}
else incluir_nome(nome_completo);
delete nome;
delete nome_completo;
}
//delete wtext;
return;
}
int main(int argc,char *argv[])
{
//Ler o caminho de entrada (FAZER !!!)
int i,j,k,l;
char* caminho;
char asterisco[] = "*";
if(argc==-2) erro(2);
//cout << argv[0] <<endl;
k=0;
while(argv[0][k]!='\0') k++;
j=k;
while(argv[0][j]!='\\') j--;
caminho = new char[j+2];
for(l=0;l<=j;l++) caminho[l] = argv[0][l];
caminho[j+1]='\0';
strcat(caminho,&asterisco[0]);
//cout << caminho <<endl;
//Inicializar a Lista
lista_limite = 2;
lista_cont = 0;
lista = new char*[lista_limite+1];
incluir(caminho);
lista2 = new char*[lista_cont];
for(i=0;i<=lista_cont-1;i++)
{
k=0;
while(lista[i][k]!='\0') k++;
j=k;
while(lista[i][j]!='\\') j--;
k--;
j++;
lista2[i] = new char[k-j+2];
for(l=j;l<=k;l++) lista2[i][l-j] = lista[i][l];
lista2[i][k-j+1]='\0';
}
//heapsort(lista2,lista,lista_cont);
for(i=0;i<=lista_cont-1;i++) cout << lista[i] << endl;
for(i=0;i<=lista_cont-1;i++) cout << lista2[i] << endl;
delete lista;
delete lista2;
while(getchar()=='\0');
}
|