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

Testando arquivo


viciado

Pergunta

Por que o programa trava no final e tenho que finalizar a tarefa ?

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

#define MAX 3
struct papelaria
       {
                int id;
                char descricao[50];
                float valor;
                int quant;
                }dados[MAX];
int main()
{
  FILE *fp;
  char nome[30], local[30];
  printf("Digite o nome do arquivo \n");
  fgets(nome, 30, stdin);
  strcpy(local,"c:\\pasta\\");
  strcat(local,nome);
  strcat(local,".txt");
  fp = fopen(local,"w");
  int i;
  for(i=0;i<MAX;i++){
                     printf("Informe o codigo \n");
                     scanf("%d",&dados[i].id);
                     printf("Digite a descricao do produto \n");
                     scanf("%s",&dados[i].descricao);
                     printf("Informe o valor unitario \n");
                     scanf("%f",&dados[i].valor);
                     printf("Informe a quantidade em estoque \n");
                     scanf("%d",&dados[i].quant);
                     }
  for(i=0;i<MAX;i++){
                     fprintf(fp,"%d\n",dados[i].id);
                     fprintf(fp,"%s\n",dados[i].descricao);
                     fprintf(fp,"%f\n",dados[i].valor);
                     fprintf(fp,"%d\n",dados[i].quant);
                     }
  fclose(fp);
  printf("\nArquivo salvo \n");
  system("PAUSE");    
  return 0;
}

Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

  • 0

Opa,

O problema de violação de acesso que você está tendo e que acaba ocasionando no fechamento do seu programa ocorre no momento em que você tenta escrever algo no seu arquivo. Isso ocorre porque logo após o momento em que você faz o fp = fopen(... você não verificou se o seu ponteiro para o arquivo é diferente de NULL para então tentar manipulá-lo, e o ponteiro está nulo pois ele não está criando o arquivo pois está sendo usado um caminho para o arquivo (C:\pasta\teste.txt) e não somente o nome do mesmo.

Ocorre que se usando a função fopen colocando somente o nome_do_arquivo.txt o seu programa irá funcionar e irá criar o arquivo no mesmo diretório onde está sendo gerado o seu executável.

Para criá-lo em outro diretório dê uma olhada na função open que funciona sem problemas.

Segue abaixo um link com dicas de como usar a fç open:

Dicas de como usar função open para abertura de arquivos

Att

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,1k
    • Posts
      651,8k
×
×
  • Criar Novo...