Ir ao conteúdo
  • Cadastre-se

Mostrar conteúdo TXT na tela!


Porval's

Posts recomendados

Olá,

Estou usando DEV C++, e estou fazendo um projeto em C, mas estou com uma dúvida. Algúem sabe se existe alguem jeito de fazer com que um determinado arquivo txt exiba seu conteúdo na tela.

Eu fiz um codigo que faz cadastro de funcionários e é criado automaticamente uma tabela em txt, mas é ruim ter que abrir esse txt para verificar os cadastrados. Por isso eu quero printar na tela. ^_^

Grato, espero respostas!

Link para o comentário
Compartilhar em outros sites

Hum...legal..funcionou exatamente como eu queria!

Muito obrigado pela ajuda Gabriela! :)

VALEU!

Alias, aproveitando o tópico, você sabe como imprimir uma string composta em um arquivo?

Por ex: 'Gabriela Goes'

Porque do jeito que estou usando pára no espaço, usando fprintf/fscanf.

printf("NOME: ");

fprintf(arquivo, "\n0%d", x);

fscanf(stdin,"\n%s",nm)

O certo seria usar Fgets ou gets (var) mas sempre dá algum tipo de erro quando tento usar. :(

Link para o comentário
Compartilhar em outros sites

então, a funcao gets() é bem legal, resolve muitos problemas mas tambem da uns erros estranhos, uma maneira de resolver alguns desses erros é colocando o comando

_flushall(void);

antes de qualquer gets(). nao tenho a minima ideia do que este comando faz ou como ele funciona, mas usa-lo junto com o gets pelo menos pra mim ja é quase obrigação.

e pra exibir o nome inteiro, sem parar no espaço eu uso cout<<

isso ja é mais c++ e nao c. Mas é provavel q seu compilador aceite mesmo assim

Link para o comentário
Compartilhar em outros sites

difícil, nao tem quase nenhum site falando sobre esse flushall() .. têm alguns da própria microsoft, mas dai nao é C.

Eu acho que deve ser algo como o fflush() .. que serve para limpar o buffer .. no parametro deve-se colocar do que..como 'stdin' (standart input) que seria o teclado ..

então 'flush''all' seria pra limpar o buffer de tudo..acho que é isso.

Estou com outra duvida (lá vou eu novamente..hehe)

Como posso fazer para o programa verificar se um arquivo txt está limpo ou tem algo escrito?

if "limpo" faça isso

else

"isso"

ou até mesmo

while (!limpo)

nao sei como fazer o programa ler o arquivo..

Link para o comentário
Compartilhar em outros sites

  • mês depois...

o meu problema é o seguinte....

eu quero colocar na tela o conteúdo de um txt em colunas, mas só aparece uma palavra...já tentei de tudo que eu sabia e nada...

abaixo a função...

se alguém puder me ajudar eu fico grato...

Falou...

int Visualiza (void)

{

int i;

char palavra[15];

FILE *visualiza;

if ((visualiza = fopen ("animais.txt", "r")) == NULL)

{

Forca ();

gotoxy (39,12); textcolor (12); textbackground (3);

printf ("ERRO!\n");

gotoxy (25,17);

printf ("N%co foi poss%cvel ler o arquivo!\n", -58, -95);

fflush(stdin);

getch ();

}

else

{

Retangulo ();

textcolor (15); textbackground (1); gotoxy (6,4);

printf (" ANIMAIS ");

do{

_flushall (); // funciona como o "fflush (stdin)".

fgets (palavra, 15, visualiza);

for (i = 0; i < 60; i++) // for para controlar a impressão das strings.

{

if (i <= 15)

{

gotoxy (10,7); textcolor (0); textbackground (3);

fflush (stdin);

strupr (palavra);

puts (palavra);

}

} // fim do laço for

}

while (!feof (visualiza));

}

gotoxy (22,25); textcolor (14); textbackground (3);

printf (" Pressiona qualquer tecla para voltar \n");

getch ();

}

Link para o comentário
Compartilhar em outros sites

  • Membro VIP

Em toda introdução de caracteres, é bom você usar fflush(stdin). Para imprimir tudo como coluna, crie um "for" para buscar no arquivo e dps dar um "\n" para tabelar. Para saber quantas palavras tem, pode-se usar um esquema que faz a leitura dos dados do arquivo txt ou binario e procura por "\0" ou "\n", ou seja, por final da string ou por tabulação, respectivamente. Faça isso dentro de um "while" e use um contador para identificar a quantidade de palavras. Lembre-se de colocar o parametro do while como: while(!feof); para que se percorra ate o final do arquivo. Feito isso, agora o restante é perfumaria...

Caso tenha duvida de qual logica usar na verificação, da ideia ai que eu te dou uma moral na parada. Abração!

aí....

alguem pode me ajudar com o meu problema que postei acima...

por favor...

obrigado.

Link para o comentário
Compartilhar em outros sites

aqui que eu fiz =D

#include <stdio.h>

#include <stdlib.h>

#include <time.h>

int main(int argc, char *argv[])

{

system("color 1F");

char nov;

FILE *arquivo;

char nome[40],ler;

int dia,mes,ano,hora,minuto,segundo,opcao;

struct tm *sTempo;

time_t tempo;

tempo = time(NULL);

sTempo = localtime(&tempo);

dia = sTempo->tm_mday;

mes = sTempo->tm_mon+1;

ano = sTempo->tm_year+1900;

do{

printf("------------------------------------------------------------------------");

printf(" ------------\n | %d/%d/%d | \n ------------\n",dia,mes,ano);

printf("+-----------------------\n| 0 - Sair \n| 1 - Escrever TXT \n| 2 - Visualizar TXT \n+-----------------------\n");

scanf("%d", &opcao);

if(opcao == 0){return(0);} // Usuário digitou 0 então sai...

if(opcao == 1){ // Usuário digitou 1 então que gravar dados...

arquivo = fopen("dados.txt","a+");

printf("Escreva no TXT:");

fflush(stdin);

gets(nome);

strcat(nome,"\n");

fputs(nome,arquivo);

printf("Dados inseridos\n");

fclose(arquivo);

}

if(opcao == 2){ // Usuário digitou 2 então que BUSCAR dados...

arquivo = fopen("dados.txt","a+");

printf("----------------------------------\n Visualizando \n----------------------------------\n*******************************\n");

ler = getc(arquivo);

while(!feof(arquivo)){ // FEOF == End Of File...

printf("%c",ler);

ler = getc(arquivo);

}

printf("*******************************\n");

}

printf("Deseja continuar no programa?(s|n):");

scanf("%s",&nov);

}while(nov=='s'||nov=='S');

system("PAUSE");

return 0;

}

Link para o comentário
Compartilhar em outros sites

obrigado, mas já consegui, abaixo a função(parte dela)...

tenham uma ótima tarde.

do

{

fflush (stdin);

fgets (palavra, 256, visualiza);

gotoxy (posX, posY);

strupr (palavra);

puts (palavra);

posY += 2; //Desce o cursor

if (posY == 41) //Se 10 nomes já tiveres sido inclusos, vai pra próxima coluna

{

posX += 17; //Espaço de 30 caracteres

posY = 5; //Volta pra coluna

}

}

while (!feof (visualiza));

Link para o comentário
Compartilhar em outros sites

  • Membro VIP

Se você fizer a introdução de dados no TXT e logo em seguida quiser obte-los, é necessário fechar o arquivo via fclose(dados.txt) e dps criar uma condição com "if" para abri-lo e capturar o que deseja. Busque trabalhar com alocação dinamica via definição de string's por "strlen". Boa sorte ai... qualquer duvida é só dar um teco ai na pagina. Abração.

Link para o comentário
Compartilhar em outros sites

  • 2 semanas depois...

A função fflush() serve para limpar o buffer isso acontece porque a função de entrada fgets() recebe o "\n" que fica armazenado em buffer, para isso você pode apenas usa getchar(); antes do fgets();

para usar o fgets de maneira apropriada você pode usar um #define, tipo assim

#define tamanho 30

dai você le a string com espaço inclusive;

char nome[tamanho];

printf("Digite seu nome : \n");

getchar():

fgets(nome,tamanho,stdin);

pronto se precisar a função fflush()

Link para o comentário
Compartilhar em outros sites

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades 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

×
×
  • Criar novo...