Eu estou tentado fazer uma espécie de e-mail em C, mas estou com um pequeno problema: o fclose da linha 39 (que está depois do término de um for, no primeiro programa) não está funcionando. O programa compila normalmente mas, na hora da execução (desse comando), fica apenas carregando. Vou colocar os scripts abaixo para vocês entenderem.
#include<stdio.h>
#include<stdlib.h>
#include<windows.h>
#include<string.h>
#include<locale.h>
#include<time.h>
int main(){
setlocale(LC_CTYPE,"Portuguese");
FILE *CaixaEntrada;
int a, i, op, hor;
char mensagem[100], email[10000], ContaAtual[100];
char texto[10000], email2[100], tempo[20];
char nome[50], sobrenome[50];
struct tm * tm;
time_t t;
CxEnt: CaixaEntrada = fopen("ContaAtual.txt","r");
if(feof(CaixaEntrada)) system("EntrarConta.exe");
fgets(ContaAtual,100,CaixaEntrada);
strcpy(email,ContaAtual);
strcat(email,"CaixaEntrada");
strcat(email,".txt");
fclose(CaixaEntrada);
CaixaEntrada = fopen(ContaAtual,"r");
fgets(nome,50,CaixaEntrada);
fgets(sobrenome,50,CaixaEntrada);
nome[strlen(nome)-1] = '\0';
sobrenome[strlen(sobrenome)-1] = '\0';
fclose(CaixaEntrada);
system("cls");
printf("CAIXA DE ENTRADA de %s %s\n\n",nome,sobrenome);
CaixaEntrada = fopen(email,"r");
printf("Mensagens novas:\n\n");
for(;;){
fgets(mensagem,1000,CaixaEntrada);
if(strcmp(mensagem,"\n")!=0) printf("-> %s\n",mensagem);
else break;
}
fclose(CaixaEntrada);
CaixaEntrada = fopen(email,"w");
fclose(CaixaEntrada);
printf("\n(1) Sair da Conta\n");
printf("(2) Escrever\n");
printf("(3) Sair\n");
op = getchar();
op-=48;
if(op==1){
fclose(CaixaEntrada);
CaixaEntrada = fopen("ContaAtual.txt","w");
fclose(CaixaEntrada);
system("cls");
printf("Saindo...");
Sleep(500);
system("EntrarConta.exe");
}
if(op==2){
fclose(CaixaEntrada);
system("cls");
printf("\t\tESCREVER\n\n");
printf("Digite o endereço de e-mail do destinatário (sem @nimail.com): ");
scanf("%s",email2);
printf("Digite o e-mail (não dê ENTER até acabar): ");
fflush(stdin);
gets(texto);
strcpy(email,email2);
strcat(email,"CaixaEntrada");
strcat(email,".txt");
CaixaEntrada = fopen(email,"a");
time(&t);
tm = localtime(&t);
sprintf(tempo,"%s",asctime(tm));
tempo[strlen(tempo)-1] = '\0';
printf("(%s)\n",tempo);
fprintf(CaixaEntrada,"%s | ",tempo);
fprintf(CaixaEntrada,"%s | De %
[email protected]\n\n",texto,ContaAtual);
fclose(CaixaEntrada);
printf("Texto enviado con sucesso!\n");
j: printf("(1) Voltar para a caixa de entrada\n");
printf("(2) Sair da conta\n");
op = getch();
printf("%c\n",op);
if(op=='1') goto CxEnt;
else if(op=='2'){
CaixaEntrada = fopen("ContaAtual.txt","w");
fclose(CaixaEntrada);
system("cls");
printf("Saindo...");
Sleep(500);
system("start EntrarConta.exe");
}
else{
printf("Opção inválida!! Digite 1 ou 2.\n");
goto j;
}
}
if(op==3){
getch();
exit(2);
}
}
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<locale.h>
int main(){
FILE *nconta;
FILE *GeraConta;
FILE *email;
setlocale(LC_CTYPE,"Portuguese");
struct nascimento{
int dia;
int mes;
int ano;
};
char email2[100];
struct conta{
char nome[50];
char sobrenome[50];
char endereco[20];
char senha[30];
int idade;
struct nascimento data;
char sexo;
}contas;
int numconta, a, i, anoi;
char data[10], anoc[5];
printf("CRIAR CONTA NO NIMAIL\n\n");
printf("Seu primeiro nome: ");
scanf("%s",&contas.nome);
printf("\nSeu sobrenome: ");
scanf("%s",&contas.sobrenome);
printf("\nDigite um endereço de email: ");
GeraEndereco: scanf("%s",&contas.endereco);
GeraConta = fopen(contas.endereco,"r");
if(GeraConta != NULL){
fclose(GeraConta);
printf("Esse endereço já foi usado. Tente outro!");
goto GeraEndereco;
}
fclose(GeraConta);
GeraConta = fopen(contas.endereco,"a");
printf("\nDigite o dia de seu nascimento: ");
scanf("%d",&contas.data.dia);
printf("Digite o mês de seu nascimento: ");
scanf("%d",&contas.data.mes);
printf("Digite o ano de seu nascimento: ");
scanf("%d",&contas.data.ano);
_strdate(data);
a=0;
for(i=6; i<strlen(data); i++){
anoc[a] = data[i];
a++;
}
anoi = atoi(anoc)+2000;
contas.idade = anoi - contas.data.ano;
printf("\nQual é seu sexo ('M' para masculino, 'F' para feminino): ");
contas.sexo = getch();
printf("%c\n",contas.sexo);
printf("\nDigite sua senha: ");
scanf("%s",&contas.senha);
fprintf(GeraConta,"%s\n%s\n",contas.nome,contas.sobrenome);
fprintf(GeraConta,"%d/%d/%d\n",contas.data.dia,contas.data.mes,contas.data.ano);
fprintf(GeraConta,"%c\n",contas.sexo);
fprintf(GeraConta,"%s\n",contas.senha);
fclose(GeraConta);
system("pause");
system("cls");
printf("Cadastramento feito com sucesso.\n");
printf("Você já pode sair! Pressione qualquer tecla para sair...\n");
getch();
strcpy(email2,contas.endereco);
strcat(email2,"CaixaEntrada");
strcat(email2,".txt");
email = fopen(email2,"a");
fclose(email);
}
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<locale.h>
#include<windows.h>
void erro(){
printf("Erro! Email ou senha inválidos!\n");
getch();
}
int main(){
setlocale(LC_CTYPE,"Portuguese");
FILE *EntraConta;
int a, i, op;
char email[50], senha[20], senha1[20];
char nome[50], sobrenome[50], h=0;
//REDIRECIONA PARA CAIXA DE ENTRADA SE JÁ TIVER NUMA CONTA...
EntraConta = fopen("ContaAtual.txt","r");
if(EOF) goto escolha;
fscanf(EntraConta,"%s",&email);
fclose(EntraConta);
EntraConta = fopen(email,"r");
fgets(nome,50,EntraConta);
fgets(sobrenome,50,EntraConta);
nome[strlen(nome)-1] = '\0';
sobrenome[strlen(sobrenome)-1] = '\0';
printf("Redirecionado para caixa de entrada de %s %s...",nome,sobrenome);
fclose(EntraConta);
Sleep(1000);
system("cls");
system("Email.exe");
//-----------------------------------------------------------------
//ENTRAR NUMA CONTA OU CRIAR CONTA
escolha:
system("cls");
printf("Escolha uma opção:\n");
printf("(1) Entrar na minha conta\n");
printf("(2) Criar uma conta\n");
fflush(stdin);
op=getchar();
op-=48;
//ENTRAR NA CONTA
if(op==1){
entrar: system("cls");
printf("Digite 1 para voltar.\n");
printf("Digite seu endereço de email (sem @nimail.com): ");
scanf("%s",&email);
if(atoi(email)==1) goto escolha;
EntraConta = fopen(email,"r");
printf("Senha: ");
scanf("%s",&senha);
if(EntraConta == NULL){
erro();
goto entrar;
}
while(fgets(senha1,20,EntraConta) != NULL);
senha1[strlen(senha1)-1]='\0';
if(strcmp(senha,senha1)==0){
EntraConta = fopen("ContaAtual.txt","w");
fprintf(EntraConta,"%s",email);
fclose(EntraConta);
EntraConta = fopen(email,"r");
fgets(nome,50,EntraConta);
fgets(sobrenome,50,EntraConta);
nome[strlen(nome)-1] = '\0';
sobrenome[strlen(sobrenome)-1] = '\0';
printf("Redirecionado para caixa de entrada de %s %s...",nome,sobrenome);
fclose(EntraConta);
Sleep(1000);
system("cls");
system("Email.exe");
}
else{
erro();
goto entrar;
}
}
//-----------------------------------------------------------------
//CRIAR CONTA
else if(op==2){
system("cls");
system("CadastramentoNiMail.exe");
goto escolha;
}
//-----------------------------------------------------------------
//OPÇÃO INVÁLIDA
else{
printf("Opção inválida!!\n");
getch();
goto escolha;
}
//-----------------------------------------------------------------
}