Estou com um problema que aparentemente é bem simples. O programa precisa obter dados sobre controle de vendas de uma loja. Ele armazenará o nome e o telefone do(s) cliente(s), jogará num arquivo .txt e depois exibirá os dados digitados do(s) cliente(s) na tela. Preciso utilizar no programa estruturas de repetição, vetor, ponteiros, alocação dinâmica e estruturas. Quando executo o código abaixo o programa para de funcionar, e não salva no .txt.
#include<stdio.h>
#include<stdlib.h>
typedef struct{
char nome[50], tel[20];
}dados;
int main(){
FILE *arq;
char nome[50], tel[20];
int i, n;
dados cliente, *p;
p=&cliente;
printf("CONTROLE DE VENDAS\n Digite o numero de clientes: ");
scanf("%d", &n);
p=(dados*)calloc(n, sizeof(dados));
if(p==NULL){
printf("Memoria insuficiente!");
return 0;
}
for(i=0;i<n;i++){
printf("DADOS DO CLIENTE\n");
printf("Digite o nome do cliente %d: ", i+1);
fflush(stdin);
gets(p[i].nome);
printf("Digite o telefone: ");
fflush(stdin);
gets(p[i].tel);
}
arq=fopen("ControleDeVendas.txt", "a");
if(!arq){
printf("Erro na abertura do arquivo!");
exit;
}
fprintf(arq, "%s\n", nome);
fprintf(arq, "%s\n", tel);
fclose(arq);
for(i=0;i<n;i++){
printf("O cliente %s - Tel: %s\n", p->nome, p->tel);
p++;
}
free(p);
system("pause");
return 0;
}