Ir ao conteúdo

Mostrar conteúdo TXT na tela!


Porval's

Posts recomendados

Postado

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!

Postado

bom, o comando em c em bem simples mas eu nao lebro agora....

porém tem outro comando que nao é exatamente c mas funciona legal.

tenta

system("type arquivo.txt");

na verdade você ta usando o comando type do console, funciona legal se voce so quiser exibir o conteudo

Postado

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. :(

Postado

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

Postado

antes do flushall tem um underline nao vai esquecer

_flushall()

e pra usar o cout escreve no dev

#include <iostream>

using namespace std;

int main(){

char coisa[30];

_flushall();

gets(coisa);

cout<<coisa;

.

.

.

Postado

Nossa..simplesmente coloquei esse _flushall() antes do gets e milagrosamente funcionou..hehehe..vai entender!:lol:

Vou pesquisar pra descobrir o que exatamente faz esse comando.

Valeu pela ajuda!

Postado

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..

  • mês depois...
Postado

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 ();

}

  • Membro VIP
Postado

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.

Postado

Plateu, agradeço muito a ajuda mas não assimilei muito bem o que você disse...

por favor explique novamente...

obrigado.

Postado

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;

}

Postado

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));

  • Membro VIP
Postado

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.

  • Membro VIP
Postado

Tira como base esse codigo aqui, Tcho. ELe me parece bem coerente e pro seu caso ai vai servir na boa.

aqui que eu fiz =D
  • 2 semanas depois...
Postado

usa assim

do {

ch=getc(stdin);

if (ch!='\0') //controla o fim das strings

printf("%c",ch);

else printf("%c","\n");

} while (ch!=EOF);

Postado

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()

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...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!