Ir ao conteúdo
  • Cadastre-se
Pereira Ribeiro

Busca de palavras em mais de um arquivo c++

Recommended Posts

Pessoal, 

Boa tarde

Estou com uma duvida.....

Fiz um código onde ele busca uma palavra em um arquivo e joga na tela a palavra e a linha onde ela está.

Eu passo o nome do arquivo como primeiro argumento e a palavra a ser buscada como segundo argumento.

 

Sendo que agora preciso que ele procure a mesma palavra em 3 arquivos txt diferentes, inserindo somente a palavra a ser buscada como argumento

Os 3 arquivos estão todos dentro de uma base.bin

 

Sabem como consigo fazer isso:?

 

Obrigado

 

Segue o codigo que já fiz 

#include <fstream>
#include <string>
#include <iostream>
#include <time.h>
using namespace std;

int main(int argc, char *argv[]){
  string palavra, linha;
  argc = 2;
  palavra = argv[2];
  int n;
  ifstream arqtxt;
  arqtxt.open(argv[1]);
    
  clock_t tStart = clock();
  if(arqtxt.is_open()) {
    while (!arqtxt.eof()) {
      getline(arqtxt,linha);
      if ((n = linha.find(palavra, 0)) != string::npos){
        cout<<"Palavra "<<palavra<<" encontrada em: "<< ((double)(clock()    - tStart)/60)<<" segundos"<<endl;
        arqtxt.close();
        return 0;            
      }
            
    } 
    cout<<"Palavra "<<palavra<<" não encontrada em "<< ((double)(clock()-tStart)/60)<<" segundos"<<endl;    
    arqtxt.close();
  } else {
    cout<<"Arquivo "<<argv[1]<< " não encontrado em "<<((double)(clock()-tStart)/60)<<" segundos"<<endl;
  }            
        
  return 0;
}

 

busca.jpg

Editado por dif
Botão CODE <>

Compartilhar este post


Link para o post
Compartilhar em outros sites

a ver si entendo....
você quer buscar uma palavra em 3 arquivos? Más os 3 arquivos vão estar na mesma pasta do programa? E você não pode passar os nomes dos arquivos, só a palavra? Se for assim você deve explorar o diretório para averiguar que arquivos terminam em .bin e buscar a palavra em todos os arquivos desse mesmo tipo:

Aqui deixo um código que tenho guardado para explorar pastas e ver informação dos arquivos existentes dentro de uma pasta:

#include <stdlib.h>
#include <stdio.h>
//#include <sys/types.h>
#include <dirent.h>

void error ( const char *s );
void procesoArchivo ( char *archivo );

int main() {
    DIR *dir;
    struct dirent *ent;
    dir = opendir ( "." );
    
    if ( dir == NULL ) error ( "Nao foi possivel abrir a pasta!" );
        

    while ( ( ent = readdir ( dir ) ) != NULL ) {
        /* Retorna a pasta atual(.) ou a pasta um nivel acima(..) igualmente como o comando ls*/
        if ( ( strcmp ( ent->d_name, "." ) != 0 ) && ( strcmp ( ent->d_name, ".." ) != 0 ) ) {
            procesoArchivo ( ent->d_name );
        }
    }
    
    closedir ( dir );
    
    return EXIT_SUCCESS;
}

void error ( const char *s ) {
    /* perror retorna a string s e o erro relacionado com errno*/
    perror ( s );
    exit ( EXIT_FAILURE );
}

void procesoArchivo ( char *archivo ) {
    /* Para processar, ou pelo menos fazer algo com o arquivo, vamos informar o tamanho em bytes de cada arquivo */
    /* Usaremos para ver o tamanho em bytes o que podemos ver aqui (Español): http://totaki.com/poesiabinaria/2010/04/tamano-de-un-fichero-en-c/*/
    FILE *fich;
    long ftam;
    
    fich = fopen ( archivo, "r" );
    
    if ( fich ) {
        fseek ( fich, 0L, SEEK_END );
        ftam = ftell ( fich );
        fclose ( fich );
        /* Se tudo foi bem informamos o tamanho */
        printf ( "%36s (%ld bytes)\n", archivo, ftam );
    } else
        /* Se aconteceu algum erro só mostramos o nome */
        printf ( "%30s (No info.)\n", archivo );
}

você deveria modificalo para ir abrindo um a um todos os arquivos terminados em bin e fazer a tal busca.






 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×