Ir ao conteúdo
  • Cadastre-se
Bronislaw

Abrir Arquivos .txt em C

Recommended Posts

Pessoal tenho um trabalho para fazer em C que usa lista e lista cabecalho, até ae tudo bem já sei lidar com isso, o problema é que tenho que dentro de um certo diretorio abrir varios arquivos .txt e copiar o que tem dentro desses arquivos txt para o programa, só que já pesquisei e só achei uns codigos muito complexos que não consigo entender nada, foi no site da microsoft ainda.

Alguém sabe como devo fazer, para abrir varios arquivos txt de dentro de uma pasta e copiar o que esta escrito neles, obrigado pessoal.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Obrigadão miniman12, mas infelizmente nesse trabalho só posso utilizar codigos de C mesmo, não posso usar C++ ou C#.

Se alguem souber de alguma função codigo ou qualquer coisa que possa ajudar me avisem pessoal. Obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

amigo você pode usar a funcao fopen...

você quer pegar o que esta em cada arquivo e juntar tudo e joga em apenas um?

você pode usar a funcao fwrite e fread ou fgetch

Compartilhar este post


Link para o post
Compartilhar em outros sites

Caro,

estou mandando um código meu que pega dados de um arquivo texto e transforma em uma lista de dados no programa.

código - http://www.mediafire.com/?miv4mgzn0mm

Para usar e testar o programa crie um arquivo .txt co números inteiros separados por expaços ou quebra de linha. O programa vai transformar isso em uma árvore binária em largura e depois irá gerar percorrimentos como saída.

dê uma olhada na função

le_entrada();

ela que puxa os dados do arquivo. Abraço!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Obrigadão Dejaime, creio que ira ajudar para caramba, o meu trabalho é um pouco diferente, consigo fazer tudo menos essa parte de abrir os arquivos que o professor não ensinou e disse que faz parte da pesquisa do trabalho, fiquei meio de cara com isso.

Ele quer que abra e jogue numa lista cabeçalho.

Vou colocar o inicio do problema aqui.

"Desenvolver uma aplicação que crie, mantenha e utilize um índice de palavras na forma de listas encadeadas, contendo a localização de todas as ocorrências dessas palavras em arquivos-texto gravados em uma localização específica (um diretório) do disco.

Tarefas Solicitadas.

O trabalho deve desenvolver um programa em linguagem C que construa um mini-banco de dados em memória primária utilizando listas encadeadas, contendo um índice para todas as ocorrências de todas as palavras contidas nos arquivos-texto (*.txt) armazenados em uma pasta (diretório) específica do disco. Com esse índice na memória, o programa deverá permitir a pesquisa de uma palavra qualquer e, caso a encontre no índice, extrair do mesmo as seguintes informações:

1 - Número total de ocorrências da palavra (considerando todos os arquivos indexados);

2 - Número de arquivos onde a palavra ocorre;

3 - Nome do arquivo e um breve contexto (trecho do arquivo), de cada uma das ocorrências da palavra.

Simulando o Google Desktop ou Windows Desktop Search (só que somente para txt).

Bom a parte de lista encadeadas sei trabalhar legal, até porque a gente viu muito isso nas aulas, fizemos muitos exercicios também, o problema esta exatamente em abrir todos esses .txt formando um nó cabeçalho e as palavras de dentro do txt separados por virgula em uma lista encadeada dentro do nó cabecalho.

Só não sei a parte de abrir o arquivo, você que entende bastante se tiver umas dicas para me dar também, qualquer coisa que ajude eu ficaria muito agradecido mesmo.

Obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

para abrir um arquivo você deve primeiro criar um ponteiro do tipo FILE. Existem algumas formas de você criar um arquivo como segue abaixo:

"Modo" [significado]

"r" [abre um arquivo texto para leitura]

"w" [cria um arquivo texto para escrita]

"a" [anexa um arquivo texto]

"rb" [abre um arquivo binário para leitura]

"wb" [cria um arquivo binário para escrita]

"ab" [anexa um arquivo binário]

"r+" [abre um arquivo texto para leitura /escrita]

"w+" [cria um arquivo texto para leitura / escrita]

"a+" [anexa ou cria um arquivo-texto para leitura / escrita]

"r+b" [abre um arquivo binario para leitura / escrita]

"w+b" [cria um arquivo binário para leitura / escrita]

"a+b" [anexa um arquivo binário para leitura / escrita]

(fonte: C completo e Total - terceira Edição)

exemplo de código abrindo um arquivo.

void leitura()

{

int i=0;

fp=fopen("teste.txt","r");

if(fp == NULL)

{

printf("Erro ao abrir arquivo");

getch();

}

printf("Lendo arquivo e carregando vetor");

while(!feof(fp))//enquanto não atingir o fim do arquivo//

{

fscanf(fp,"%d",&vn);//le dado do arquivo e insere no vetor//

i++;

}

fclose(fp);//fecha o arquivo

}

Compartilhar este post


Link para o post
Compartilhar em outros sites

hunnn beleza, até ae consegui fazer tranquilo sem nenhum erro, o problema esta em iniciar o programa por parametro (linha de comando na inicialização do programa), essa parte sei fazer também.

Só não consegui achar uma função ou fazer uma função, para ele abrir os arquivos de uma certa pasta, se essa pasta tiver por exemplo 20 arquivos txt, preciso abrir todos eles, jogar em um nó-cabeçalho, para depois acessar esse nó-cabeçalho abrindo arquivo por arquivo pegando as palavras e jogando em uma lista.

Esse esta o meu maior problema até agora...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Oi Pessoal, seguinte:

construí esse código de acordo com as n números de apostilas e fóruns que visitei e ainda assim está dando a seguinte mensagem: "11 C:\Dev-Cpp\main3.cpp invalid operands of types `FILE*' and `FILE*' to binary `operator*' "

Afinal, o que é que eu estou fazendo de errado?

#include <string.h>

#include <stdio.h>

using namespace std;

int main()

{

FILE *fp;

fp *fopen("arquivo.txt", "r");

if(!fp)

{

printf("Erro ao abrir o arquivo\n");

return 0;

}

fclose(fp);

system("PAUSE");

return EXIT_SUCCESS;

}

Compartilhar este post


Link para o post
Compartilhar em outros sites
Oi Pessoal, seguinte:

construí esse código de acordo com as n números de apostilas e fóruns que visitei e ainda assim está dando a seguinte mensagem: "11 C:\Dev-Cpp\main3.cpp invalid operands of types `FILE*' and `FILE*' to binary `operator*' "

Afinal, o que é que eu estou fazendo de errado?

Olha aí o jeito correto:


#include <stdio.h>
#include <stdlib.h>

int main()
{
FILE *fp;

fp = fopen("teste.txt", "r");

// lê o arquivo aqui

fclose(fp);

return 0;
}

E você ressucitou um tópico do ano passado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom Dia amigo gostaria que você fize-se meu programa abrir os dados txt que ele cria....

Esse e codigo fonte:

#include <stdio.h>

#include <stdlib.h>

main(void)

{

system("color 17");

//variaveis

float n1, n2;

int dia, mes, ano, opcao;

FILE *data; // Cria o arquivo

//entrada de dados

system("cls");

do {

system("date/t");

system("cls");

printf("\n\t\t\tDigiboard Eletronica da Amazonia\n\n");

printf("\nDigite a data de hoje (dd mm aaaa): ");

scanf("%d%d%d", &dia, &mes, &ano);

printf("\nDigite a quantidade produzida: ");

scanf("%f", &n1);

printf("\nDigite a quantidade de defeitos: ");

scanf("%f", &n2);

//Armazenar dados no TXT

data = fopen("data.txt", "a+"); // abre o arquivo

fprintf(data, "%d %d %d", dia, mes, ano);

fprintf(data, " # %.f # %.f # ", n1, n2);

fprintf(data, "%.2fp # %.2fp\n", ((n1/(n1+n2))*100), ((n2/n1)*100));

fclose(data);

//Processamento

printf("\n Data de inclusao dos dados: %d/%d/%d", dia, mes, ano);

printf("\n Quantidade produzida: %.f", n1);

printf("\n Quantidade de defeitos: %.f", n2);

printf("\n O indice de YELD e de: %.2fp", ((n1/(n1+n2))*100));

printf("\n O indice de Defeito e de: %.2fp", ((n2/n1)*100));

//Finalização

printf("\n\n Deseja re-fazer o calculo: "

"\n 1. Sim "

"\n 2. Nao, desejo fechar \n\n");

scanf("%d", &opcao);

}while (opcao!=2);

//Final de codigo

system("pause");

}

Se puder me ajudar ficarei grato

  • Curtir 1

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

×