Ir para conteúdo

POWERED BY:

Arquivado

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

Daniel Filho

Passar dados de um arquivo .txt para uma estrutura de variáveis

Recommended Posts

Bom pessoal, estou com um problema em um trabalho simples da faculdade.

 

Eu tenho que através de um programa em C gravar dados no disco, até ai nenhum problema.

Porém, eu tenho que criar uma busca pra esses dados. Bom, pra fazer isso, eu tenho antes

que passar os dados do arquivo .txt pra estrutura, certo?

 

Eis o meu código:

 

#include <stdio.h>
#include <string.h>

typedef struct {
   char modelo[50];
   char cor[50];
   int estoque;
   float preco;
} Camiseta;

Camiseta camiseta[1000];

void criaArquivo() {
   FILE * arquivo;
   arquivo = fopen("estoque.txt", "a");
   fclose(arquivo);
}

void leArquivo() {
}

void salvaCamiseta() {
   Camiseta camiseta;
   FILE * arquivo;
   arquivo = fopen("estoque.txt", "a");
   system("cls");
   printf("Modelo: ");
   _flushall();
   gets(camiseta.modelo);
   printf("Cor: ");
   _flushall();
   gets(camiseta.cor);
   printf("Estoque: ");
   scanf("%d", &camiseta.estoque);
   printf("Preco: ");
   scanf("%f", &camiseta.preco);
   fprintf(arquivo, "%s,\n", camiseta.modelo);
   fprintf(arquivo, "%s,\n", camiseta.cor);
   fprintf(arquivo, "%d,\n", camiseta.estoque);
   fprintf(arquivo, "%.2f.\n\n", camiseta.preco);
   fclose(arquivo);
   printf("\nCamiseta salva com sucesso!\n");
}

void buscaCamiseta() {
}

void main(void) {
   criaArquivo();
}

 

Eu já tentei algumas maneiras, mas não deram certo. Se alguém puder me ajudar a fazer isso, agradeço.

Compartilhar este post


Link para o post
Compartilhar em outros sites

antes de tudo. não use gets(). use fgets

http://www.linhadecodigo.com.br/Dica.aspx?id=1141

há mais sobre isso no fórum. só dar uma pesquisada, que vocÊ acha

 

 

diga onde exatamente está com problemas.

 

 

um coisa legal de fazer é usar arquivo binário em vez de arquivo texto. VOcê escreve a estrutura direto no arquivo, com fwrite. Salva tudo de uma vez, sem fazer fpritnf para cada dado. Logicamente, o arquivo não será "human-readable". seu programa o interpretará

 

:thumbsup:

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom, acho que você não entenderam.

Tenho uma função, deveria funcionar para o que eu quero, mas ela trava o programa.

Aparenta ser a passagem dos dados para as variáveis, mas ja vi e revi e não consigo encontrar o erro.

 

void leArquivo() {
   FILE * arquivo;
   char modelo[50], cor[50];
   int i = 0, estoque;
   float preco;
   arquivo = fopen("estoque.txt", "r");
   while(!feof(arquivo)) {
       fscanf(arquivo, "%[a-zA-Z0-9 ]|%[a-zA-Z0-9 ]|%d|%f;", modelo, cor, estoque, preco);
	strcpy(camiseta[i].modelo, modelo);
	strcpy(camiseta[i].cor, cor);
	camiseta[i].estoque = estoque;
	camiseta[i].preco = preco;
	i++;
   }
   fclose(arquivo);
}

 

Ele compila normal, mas na hora de rodar, ele trava o programa.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.