viciado Postado Dezembro 15, 2008 Denunciar Share Postado Dezembro 15, 2008 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; } Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 vitorbrando Postado Dezembro 15, 2008 Denunciar Share Postado Dezembro 15, 2008 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 arquivosAtt Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
viciado
Por que o programa trava no final e tenho que finalizar a tarefa ?
Link para o comentário
Compartilhar em outros sites
1 resposta a esta questão
Posts Recomendados
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.