Ir ao conteúdo
  • Cadastre-se

C Ler linha em arquivo txt


Posts recomendados

Boa tarde. Estou fazendo um código de Estoque onde tenho alguns arquivos txt. Em resumo: preciso pegar uma linha de arquivo onde estará organizado da seguinte forma:

[Nome da pizza] [ingrediente 1] [quantidade do ingrediente 1] .... [ingrediente n] [quantidade n].

Farei desta forma para que ENQUANTO tiver ingredientes eu colocar o nome e a quantidade em uma variável para que eu subtraia do arquivo de estoque. Obrigado desde já.

  • Obrigado 1
Link para o comentário
Compartilhar em outros sites

@Bruno César Oliveira Dias @Bruno César Oliveira Dias    se o arquivo estiver organizado assim :

nome_da_pizza | ingredientes_1   | quant_ingred_1 | ingrediente_2 | quant_ingred_2  

portuguesa     farinha_de_trigo       5 kg              oleo            5 litros
napolitana     farinha_de_trigo       5 kg              oleo            5 litros
calabresa      farinha_de_trigo       5 kg              oleo            5 litros
marguerita     farinha_de_trigo       5 kg              oleo            5 litros
quatro queijo  farinha_de_trigo       5 kg              oleo            5 litros
mussarela      farinha_de_trigo       5 kg              oleo            5 litros

então você pode usar o comando fgets para pegar uma linha inteira , e depois procurar um 
caractere de cada vez , na variável do fgets ,  pelo nome da pizza que será a primeira palavra e ir colocando os caracteres na variável nome_da_pizza , até encontrar um espaço , e  encontrando um espaço coloque o finalizador de string  "\0'    lá na variável , e continua procurando até encontrar um caractere que não seja um espaço , 
e pega todos os caracteres e coloca na variável  ingrediente_1 , e ali uma palavra está ligada na outra por underline para facilitar a procura , até encontra um espaço , e continua procurando até encontrar um caractere que não seja um espaço , e colocar na variável de quantidade_1 , e vai assim até o final da linha , que é o caractere newline  " \n " , aí repete tudo de novo até chegar ao final do arquivo , o  EOF  ,  " End Of File " , depois faça as subtrações e compare a quantidade de ingredientes , usando o comando if , e se for maior que zero é por que ainda tem desse ingrediente , aí grava no arquivo usando o comando fprintf ,      então faça seu código e poste aqui , para vermos como está e em que podemos ajudar   .

  • Curtir 1
  • Amei 1
Link para o comentário
Compartilhar em outros sites

  • 3 semanas depois...

@devair1010 Boa noite, seguindo sua sugestão esbarrei em mais 2 problemas:

Não estou conseguindo pegar o nome do ingrediente(na verdade ele puxar certo na primeira vez, porém na segunda ele já da bug e vem todo errado);

E o segundo é que não sei converter char  ou string (vetor de caracteres) para float. Se puder me ajudar agradeço, é para um trabalho na Faculdade e já não sei mais como resolver, Obrigado!! Código:

fgets(Linha,1024,arq);
		for(i=0;i<1024;i++)
		{
			if(Linha[i] == ' ' && (Linha[i+1] == ' ' || Linha[i+1] == NULL))
			{
				Linha[i] = '\0';
			}
		}
		for(i=0;i<30;i++)
		{
			SaborSalvo[i] = Linha[i];
		}
		c = Linha[30]; // primeiro caractere do ingrediente
		while(c != '\0',j++)//j = 30, j servira para apontar o caractere atual da linha
		{
				//comandos para pegar os valores do arquivo txt
			for(i=0;i<20;i++)
			{
				ingrediente[i] = Linha[j];
				j += 1;
			}
			printf("Ingrediente %s\n",ingrediente); //testar se pegou o Ingrediente
			
			j += 2; //pula 2 caracteres da linha, 1 para o espaço e o outro para apontar para o primeiro digito da quantidade
			
			//outro problema, Como converter Char para float?
			while(c != ' ' || c != '\0',i=0,i++)
			{
				c = Linha[j];
				QtddChar[i] = c;
				j+=1;
			}
			// Qtdd = QtddChar ?
			printf("Quantidade %s\n\n",QtddChar); // testar o que puxou como quantidade
			j+=1;
			// DescontarEstoque(ingrediente,Qtdd);
			c = Linha[j];

 

  • Obrigado 1
Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário 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 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...