Ir ao conteúdo
  • Cadastre-se

Armazenar Dados Em TXT


rodrigoredstar

Posts recomendados

Estou tentando armazenar os dados de um programa que fiz em bloco txt.

O Código fonte é esse:

#include <stdio.h>

#include <stdlib.h>

main(void)

{

system("color 1F");

//variaveis

float n1, n2;

int dia, mes, ano, opcao;

//entrada de dados

system("cls");

do {

system("date/t");

system("cls");

printf("\n\t\t\tRodrigo LTDA\n\n");

printf("\t\t\tPrograma Controle de Producao 2011\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);

//Processamento

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

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

}

Agradeço quem puder me ajudar.

Se puderem fazer essa alteração no codigo para que ele salve os dados em txt,ficarei grato.

Abraços

Link para o comentário
Compartilhar em outros sites

É bem tranquilo, voce so precisa dar uma olhada em algumas funcoes do stdio.h

O que voce tem que fazer é primeiramente criar um apontador do tipo FILE:

 FILE *Arquivo 

Depois você tem que fazer esse apontador abrir o arquivo que você quer escrever. Para isso use a função:

fopen

Depois você manda escrever usando fprintf ou ler usando fscanf

Todas essas funções estão documentadas aqui:

http://www.cplusplus.com/reference/clibrary/cstdio/

E não se esqueca de fechar o arquivo depois usando fclose

Link para o comentário
Compartilhar em outros sites

tente assim:

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

using namespace std;

// main deve ter o tipo declarado
int main(void)
{
system("color 1F");

//variaveis

float n1, n2;
int dia, mes, ano, opcao;
float YELD = 0;
float def = 0;
//entrada de dados

system("cls");
do
{
system("date/t");
system("cls");
printf("\n\t\t\tRodrigo LTDA\n\n");
printf("\t\t\tPrograma Controle de Producao 2011\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);

//Processamento

printf("\n Data de inclusao dos dados: %d/%d/%d", dia, mes, ano);
YELD = ((n1/(n1+n2))*100);
printf("\n O indice de YELD e de: %.2fp", YELD);
def = ((n2/n1)*100);
printf("\n O indice de Defeito e de: %.2fp", def);

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

// salvar os dados aqui:


ofstream myfile;
myfile.open ("data.txt");
myfile << dia << '#' << mes << '#' << ano << '\n';
myfile << YELD << '#' << def;
myfile.close();

//Final de codigo
system("pause");
}

Mas conselho você a usar orientação a objetos para isso além de funções de leitura e escritura próprias. Seria mais fácil controlar o código:

struct Producao
{
int data[3];
float YELD;
float def;
};

void AbreArquivo(const char *Nome, char *Dest);
void INterpretaDados(const char *Source, struct Producao **Alvos);
void EscreveArquivo(const char *Nome, struct Producao *Source);

Link para o comentário
Compartilhar em outros sites

Bom eu conheço algumas funções da stdio.h como seek(), mas não estou lembrado disso agora :(

Mas tenho uma solução prática para isso, você pode abrir o arquivo e salvar ele em um vetor de structs 'Producao', assim quando você for escrever os dados você apenas cria novas structs e depois salva tudo no arquivo

Sobre a orientação a objetos é assim:

struct Producao
{
int data[3];
float YELD;
float def;
};

Esta seria a struct principal dos seus dados, a principal vantagem dela, é que você pode criar mais de um registro no arquivo com apenas algumas linhas...

Producao ListaDeRegistros[100];//assim você pode ter até 100 registros diferentes

// são acessados assim:
ListaDeRegistros[Indice].def = Um_Float_qualquer;

Por enquanto tenho esse código aqui... estou trabalhando numa maneira de ler seus dados e salvá-los adequadamente, depois eu posto algum resultado:

#include <iostream>
#include <fstream>

// estrutura dos seus dados
struct Producao
{
int data[3];
float YELD;
float def;
};

char *LerArquivo(char *Arquivo)
{
using namespace std;
ifstream file (Arquivo, ios::in | ios::ate | ios::binary);
if(file.is_open())
{
int size = (int)file.tellg();
char *memblock = new char [size];
file.seekg (0, ios::beg);
file.read (memblock, size);
file.close();
// fecha o arquivo
memblock[(size)] = 0; // para não sair ²²³²³% depois de memblock
// memblock agora contem todo o arquivo

// agora a leitura deve seguir um padrão da estrutura dos seus dados
// nesse exmplo # é usado para delimitar campos
// @ é o começo de uma nova estrutura
// exemplo de um arquivo salvo:
//
// 2@2#6#210
// 95.2381#5
// 1@3#6#210
// 100#5
// o seu primeiro caractere pode indicar o tamanho das structs

// FAZER: A INTERPRETAÇÃO DO ARQUIVO...

return memblock;
}
else
{
return 0;
}
}



typedef struct Producao *ProdVetor;

// salva o arquivo
// Nome: Nome do arquivo a ser sobreposto
// Fonte: um vetor com os dados do tipo (Producao) para ser salvo
// TamVetor: o Tamanho do vetor a ser salvo
void SalvarArq(const char *Nome, ProdVetor Fonte, unsigned int TamVetor)
{
using namespace std;
ofstream myfile;
myfile.open ("data.txt");
while(TamVetor != 0)
{
// atenção para a estrutura de como salvar seu arquivo
// FAZER: OTIMIZAR A ESTRUTURA DO ARQUIVO...
myfile << TamVetor << '@' << Fonte[TamVetor].data[0] << '#' << Fonte[TamVetor].data[1] << '#' << Fonte[TamVetor].data[2] << '\n';
myfile << Fonte[TamVetor].YELD << '#' << Fonte[TamVetor].def << '\n';
TamVetor--;
}
myfile.close();
}

Mas se preferir por enquanto você pode fazer assim:

antes de escrever o arquivo use a função seekg: myfile..seekg(std::ios::end); // posiciona o ponteiro de escritura no fim

Link para o comentário
Compartilhar em outros sites

Consegui dá so uma olhada.... muito obrigado pela sua dica me ajudou muito...

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

}

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

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!