Ir para conteúdo

POWERED BY:

Arquivado

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

Geo Lima

arquivo.txt

Recommended Posts

olá amigos

estou aki precisando de uma ajudinha, eu fiz esse codigo em c++, mas não tá rodando e não consigo encontrar o erro de jeito algum, será que poderiam me ajudar a encontrar esse erro?

 

é o seguinte to fazendo um programa que armazene dados em txt, porem fiz um programinha simples que so armazenava um dado apenas e rodou, mas quando acresentei mais de um dado não rodou.

 

merc = rodou

 

merc,quant,val,preco = não rodou

 

o que eu faço:

 

desde já agradeço

 

abraços

 

code

#include <stdio.h>

#include <stdlib.h>

#include <string.h>

#define lim 30

//=============================================================================

void insere(char merc[lim],int quant[lim],int val[lim],int preco[lim],int senha)

{

FILE *fd; //declaração de um ponteiro do tipo arquivo

fd = fopen("Farmacia","a");//abre o arquivo farmárcia com anexação

fprintf(fd, "%s\n", merc); //escreve mercadoria numa linha de fd

fprintf(fd, "%d\n", quant); //escreve quantidade numa linha de fd

fprintf(fd, "%d\n", val); //escreve validade numa linha de fd

fprintf(fd, "%d\n", preco); //escreve preço numa linha de fd

fprintf(stdout, "\n\n\t\t!!!PRODUTO(S) INCLUIDO(S) COM SUCESSO !!!\n");//escreve na tela

fclose(fd);//fecha o arquivo

getchar(); getchar(); //limpa o buffer e espera o usuario pressionar uma tecla

}

//=============================================================================

void pesquisa(char pesq[])

{

FILE *fd;

char linha[lim];

int checa=0;

fd = fopen("Farmacia","r");

while ((fscanf(fd,"%s",linha))!=EOF)

if (!strcmp(linha,pesq))

{

printf("\n\t CADASTRO ENCONTRADO>>> ");

fscanf(fd,"\n");

checa=1;

}

else

fscanf(fd,"\n\n");

if (checa==0) printf("CADASTRO INEXISTENTE ! TENTE NOVAMENTE!\n");

getchar(); getchar();

 

fclose(fd);

}

//=============================================================================

void exclusao(char excl[])

{

FILE *fd;

char linha[lim];

int checa=0;

char resp;

fd = fopen("Farmacia","r");

while ((fscanf(fd,"%s",linha))!=EOF)

if (!strcmp(linha,excl))

{

printf("\n\t CADASTRO ENCONTRADO>>> ");

printf("\t\tDESEJA REALMENTE EXCLUIR (%s) DA LISTA? S/N");

if (resp == 'S' || 's')

//delete(linha)

printf("CADASTRO EXCLUIDO COM SUCESSO!!!");

else

printf("VOLTANDO...");

fscanf(fd,"\n");

checa=1;

}

else

fscanf(fd,"\n\n");

if (checa==0) printf("CADASTRO INEXISTENTE ! TENTE NOVAMENTE!\n");

getchar(); getchar();

 

fclose(fd);

}

//=============================================================================

int main(void)

{

int op,senha;

char merc[lim];

int quant[lim];

int val[lim];

int preco[lim];

while (op!=4)

{

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

printf(" * *\n");

printf(" * <<< MENU DE OPCOES >>> *\n");

printf(" * *\n");

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

printf(" * 1 - Incluir MERCADORIAS; *\n");

printf(" * 2 - LISTAGEM; *\n");

printf(" * 3 - Excluir MERCADORIAS; *\n");

printf(" * 4 - ENCERRAR; *\n");

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

switch (op)

{

case 1: {

{

printf("\t INFORME O MEDICAMENTO: ");

scanf("%s",merc);

insere(merc,senha);

}

{

printf("\t INFORME A QUANTIDADE: ");

scanf("%d",quant);

insere(quant,senha);

}

{

printf("\t INFORME A DATA DE VALIDADE: ");

scanf("%d",val);

insere(val,senha);

}

}

printf("\t INFORME O PREÇO");

scanf("%d",preco);

insere(preco,senha);

}

} break;

//===========================================================

case 2: {

printf("\t INFORME O MEDICAMENTO A PESQUIZAR: ");

scanf("%s", merc);

pesquisa(merc);

} break;

//===========================================================

case 3: {

printf("\t INFORME O MEDICAMENTO QUE DESEJA EXCLUIR: ");

scanf("%s", merc);

exclusao(merc)

} break;

//===========================================================

case 4: {

printf("\t !!! PROGRAMA FINALIZANDO !!!");

} break;

//===========================================================

default: {

printf("\t OPCAO INVALIDA!");

getchar(); getchar();

}

}

}

return(0);

}

//=============================================================================

Compartilhar este post


Link para o post
Compartilhar em outros sites

O erro está aqui:

 

Veja como voce chama a função insere:

insere(merc,senha);

 

E veja como ela está definida:

void insere(char merc[lim],int quant[lim],int val[lim],int preco[lim],int senha)

 

Concluímos que voce precisa passar todos os valores do insere se não vai dar erro.

 

http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

O erro está aqui:

 

Veja como voce chama a função insere:

insere(merc,senha);

 

E veja como ela está definida:

void insere(char merc[lim],int quant[lim],int val[lim],int preco[lim],int senha)

 

Concluímos que voce precisa passar todos os valores do insere se não vai dar erro.

 

http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

fiz a mudança...mas agora qualquer opção que eu coloco dá inválida...

 

veja

 

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define lim 30
//==============================================================================
void insere(char merc[lim],int quant[lim],int val[lim],int preco[lim],int senha)
{
	 FILE *fd; //declaração de um ponteiro do tipo arquivo
	 fd = fopen("Farmacia","a");//abre o arquivo farmárcia com anexação
	 fprintf(fd, "%s\n", merc); //escreve mercadoria numa linha de fd
	 fprintf(fd, "%d\n", quant); //escreve quantidade numa linha de fd
	 fprintf(fd, "%d\n", val); //escreve validade numa linha de fd
	 fprintf(fd, "%d\n", preco); //escreve preço numa linha de fd
	 fprintf(stdout, "\n\n\t\t!!!PRODUTO(S) INCLUIDO(S) COM SUCESSO !!!\n");//escreve na tela
	 fclose(fd);//fecha o arquivo
	 getchar(); getchar(); //limpa o buffer e espera o usuario pressionar uma tecla
}
//==============================================================================
void pesquisa(char pesq[])
{
	 FILE *fd;
	 char linha[lim];
	 int checa=0;
	 fd = fopen("Farmacia","r");
	 while ((fscanf(fd,"%s",linha))!=EOF)
		if (!strcmp(linha,pesq))
		{
		   printf("\n\t CADASTRO ENCONTRADO>>> ");
		   fscanf(fd,"\n");
		   checa=1;
		}
		else
		   fscanf(fd,"\n\n");
	 if (checa==0) printf("CADASTRO INEXISTENTE ! TENTE NOVAMENTE!\n");		 
	 getchar(); getchar();
	 
	 fclose(fd);
}
//============================================================================== 
void exclusao(char excl[])
{
	 FILE *fd;
	 char linha[lim];
	 int checa=0;
	 char resp;
	 fd = fopen("Farmacia","r");
	 while ((fscanf(fd,"%s",linha))!=EOF)
		if (!strcmp(linha,excl))
		{
		   printf("\n\t CADASTRO ENCONTRADO>>> ");
		   printf("\t\tDESEJA REALMENTE EXCLUIR (%s) DA LISTA? S/N");
				if (resp == 'S' || 's')
					//delete(linha)
					printf("CADASTRO EXCLUIDO COM SUCESSO!!!");
				else
					printf("VOLTANDO...");	 
		   fscanf(fd,"\n");
		   checa=1;
		}
		else
		   fscanf(fd,"\n\n");
	 if (checa==0) printf("CADASTRO INEXISTENTE ! TENTE NOVAMENTE!\n");		 
	 getchar(); getchar();
	 
	 fclose(fd);
}		  
//==============================================================================
int main(void)
{
	int op,senha;
	char merc[lim];
	int quant[lim];
	int val[lim];
	int preco[lim];
	while (op!=4)
	{
		  printf("ESCOLHA A OPCAO: 1-2-3-4: ");
		  scanf("%s",op);
		  switch (op)
		  {
				 case 1: {
					  printf("\t INFORME O MEDICAMENTO: ");
					  scanf("%s",merc);
					  printf("\t INFORME A QUANTIDADE: ");
					  scanf("%d",quant);
					  printf("\t INFORME A DATA DE VALIDADE: ");
					  scanf("%d",val);
					  printf("\t INFORME O PREÇO");
					  scanf("%d",preco);
					  insere(merc,quant,val,preco,senha);
				   } break;
				   //===========================================================
				 case 2: {
					  printf("\t INFORME O MEDICAMENTO A PESQUIZAR: ");
					  scanf("%s", merc);
					  pesquisa(merc);
				   } break;
				   //===========================================================
				 case 3: {
					  printf("\t INFORME O MEDICAMENTO QUE DESEJA EXCLUIR: ");
					  scanf("%s", merc);
					  exclusao(merc);		   
				   } break;
				   //===========================================================
				 case 4: {
					  printf("\t !!! PROGRAMA FINALIZANDO !!!");
				   } break;
				   //===========================================================
				 default: {
						printf("\t OPCAO INVALIDA!");
						getchar(); getchar();
					 }
			 }
		  }
		  return(0);
	}					   
//==============================================================================

abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

vlw kara funcionou legal, mas agora tenho outra duvida.

se puder ajudar

 

como faço pra exclui um dado do arquivo, qual comando que eu devo usar?

 

vlw

 

até mais

Compartilhar este post


Link para o post
Compartilhar em outros sites

Uma maneira é:

Leia um dado do arquivo e escreva uma string vazia em seu lugar.

Outra maneira é:

Rescreever o arquivo todo, ou seja, ler dado por dado e usar o if para identificar o que não deseja gravar.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Para identificar a string que deseja excluir acho que é simples, se voce tiver dúvidas é só perguntar.

Use if e strcmp a cada linha lida do arquivo.

Quando encontrar a linha que deseja apagar voce precisa calcular o tamanho da string lida.

 

Imagina que voce leu:

anador

 

O ponteiro do arquivo está deslocado para a próxima linha, mas voce precisa retrocede-lo para fazer a substituição.

Isso voce pode fazer com a função fseek.

leia sobre fseek aqui:

http://www.vivaolinux.com.br/artigos/verAr...16&pagina=3

 

Retroceder o ponteiro do arquivo para início da string e então substituir a string "anador" por uma de mesmo tamanho, mas cheia de espaços.

 

;)

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.