Ir para conteúdo
Fórum Script Brasil
  • 0

Arquivo.txt


Guest Geovane

Pergunta

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,preço = 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 preço[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", preço); //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 preço[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",preço);

insere(preço,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);

}

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

Link para o comentário
Compartilhar em outros sites

8 respostass a esta questão

Posts Recomendados

  • 0

você tá no caminho certo...

você modificou a funçao insere?

você a declarou assim: void insere(char merc[lim],int quant[lim],int val[lim],int preço[lim],int senha)

e a está usando assim: insere(merc,senha); insere(quant,senha) ...

Se você a declara com 5 parametros, não pode chamar usando apenas 2. Faz as modificações e mostre-as aqui.

PS: use a tag CODE (rte-code-button.png) do fórum ao postar códigos.

Link para o comentário
Compartilhar em outros sites

  • 0

kara fiz a mudança do jeito que você falou (eu acho)...

mas agora qualquer opção dá inválida...

olha ai

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define lim 30
//==============================================================================
void insere(char merc[lim],int quant[lim],int val[lim],int preço[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", preço); //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 preço[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",preço);
                      insere(merc,quant,val,preço,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);
    }                       
//==============================================================================

Link para o comentário
Compartilhar em outros sites

  • 0

E ae seu Geovane, beleza! (vai se cadastrar no fórum quando?)

porque que não esta acessando nenhuma opção?

(...)
int op;
(...)
scanf("%s",op);             <--   scanf("%d", &op); //Se apresse não!
Algumas inconsistencias encontradas: Primeira comparação do laço.
(...)
int op; //Nenhum valor atribuido.
(...)
while (op!=4) // A primeira comparação no laço funciona?!?! Como, se o valor de "op" é desconhecido?
Que comparação é essa, meu irmão?
if (resp == 'S' || 's')
A função insere vai ser chamada várias vezes à medida que o menu for executado. Portanto não há necessidade de se usar quant, val e preço como vetores. Use como variaveis simples. Lembre de modificar os atributos da função. Na função insere:
fprintf(fd, "%d\n", quant);

Isso funciona... mas lembre que, neste caso, o que será gravado no arquivo será ondereço da primeira posição do vetor quant.

Flws!

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...