#include<stdio.h>#include<stdlib.h>int i =0;int op;char lixo[100];FILE*file,*fi;struct{char titulo[100], descrip[200], cep[10];char rua[100], cidade[100], estado[50], bairro[100], num[10], nome[100];int status, dat, totald, totalh;int datai[3], dataf[3], horai[2], horaf[2];} comp[15], aux;void menu();int main();void cadastrar(){int diai, diaf, totald, totalh, horai, horaf, temp, temp2, temp3;
in:
system("cls");
printf(" Digite o titulo do compromisso : ");
scanf("%[^\n]", comp[i].titulo);
fflush(stdin);
printf("\n Coloque aqui a descricao do mesmo : ");
scanf("%[^\n]", comp[i].descrip);
fflush(stdin);
printf("\n Por favor digite a data inicial < dd/mm/aaaa > : ");
scanf("%d/%d/%d",&comp[i].datai[0],&comp[i].datai[1],&comp[i].datai[2]);
diai = comp[i].datai[0]+ comp[i].datai[1]*30+ comp[i].datai[2]*365;
comp[i].dat = diai;
printf("\n Por favor digite o horario inicial < hh:mm > : ");
scanf("%d:%d",&comp[i].horai[0],&comp[i].horai[1]);
printf("\n Por favor digite a data final < dd/mm/aaaa > : ");
scanf("%d/%d/%d",&comp[i].dataf[0],&comp[i].dataf[1],&comp[i].dataf[2]);
diaf = comp[i].dataf[0]+ comp[i].dataf[1]*30+ comp[i].dataf[2]*365;
totald = diaf - diai;
printf("\n Por favor digite o horario final < hh:mm > : ");
scanf("%d:%d",&comp[i].horaf[0],&comp[i].horaf[1]);
horai = comp[i].horai[0]*60+ comp[i].horai[1];
horaf = comp[i].horaf[0]*60+ comp[i].horaf[1];
fflush(stdin);
printf("\n Digite o nome do local do compromisso : ");
scanf("%[^\n]", comp[i].nome);
fflush(stdin);
printf("\n Digite o estado do compromisso : ");
scanf("%[^\n]", comp[i].estado);
fflush(stdin);
printf("\n Digite o cidade do compromisso : ");
scanf("%[^\n]", comp[i].cidade);
fflush(stdin);
printf("\n Digite o cep do compromisso < _____-___ > : ");
scanf("%[^\n]", comp[i].cep);
fflush(stdin);
printf("\n Digite a rua do compromisso : ");
scanf("%[^\n]", comp[i].rua);
fflush(stdin);
printf("\n Digite o numero do local do compromisso : ");
scanf("%[^\n]", comp[i].num);
fflush(stdin);
printf("\nDigite o nome bairro do compromisso (apenas o nome) : ");
scanf("%[^\n]", comp[i].bairro);
fflush(stdin);
totalh = horaf - horai;
system("cls");
printf("\n\nA duracao do evento sera de: %d dia(s), %d hora(s) e %d minuto(s).", totald, totalh /60, totalh %60);
i++;
fi = fopen("save\\i.txt","w");
fprintf(fi,"%d", i);
fclose(fi);int o, j;for(o =0; o < i -1; o++)for(j =0; j < i -1; j++){if(comp[j].dat>comp[j +1].dat){
aux = comp[j];
comp[j]= comp[j +1];
comp[j +1]= aux;}}
printf("\n\nDeseja.\n1. Voltar ao menu\n2. Cadastrar mais compromissos.\n\n");
scanf("%d",&op);
fflush(stdin);if(op ==1)
menu();if(op ==2)goto in;}void exibirmais();void exibirmaise(){
printf("Titulo : %s\n\nDescricao :\n%s\n\n", comp[op -1].titulo, comp[op -1].descrip);
printf("O evento ocorrera no local : %s\n\n", comp[op -1].nome);
printf("%s, %s, CEP : %s\n\n", comp[op -1].cidade, comp[op -1].estado, comp[op -1].cep);
printf("Bairro : %s, Rua.%s - n %s\n\n", comp[op -1].bairro, comp[op -1].rua, comp[op -1].num);}void editar(){int diai, horai, horaf, j, o, opi;
in:
system("cls");if(i !=0){
printf("Qual compromisso deseja editar?\n\n");for(j =0; j < i; j++){
printf("%d - Titulo: %s\n", j +1, comp[j].titulo);}
printf("\n");
scanf("%d",&op);
system("cls");
exibirmaise();
printf("Qual informacao deseja editar?\n\n");
printf("1. Titulo. 8. Estado.\n");
printf("2. Descricao. 9. Cidade.\n");
printf("3. Data Inicial. 10. CEP.\n");
printf("4. Horario Inicial. 11. Rua.\n");
printf("5. Data Final. 12. Numero.\n");
printf("6. Horario Final. 13. Bairro.\n");
printf("7. Nome do local. 14. Ir para o Menu.\n\n");
scanf("%d",&opi);if(opi ==1){
printf(" novo titulo : ");
scanf("%[^\n]", comp[op -1].titulo);
fflush(stdin);}if(opi ==2){
printf("\n Nova descricao : ");
scanf("%[^\n]", comp[op -1].descrip);
fflush(stdin);}if(opi ==3){
printf("\nNova data inicial < dd/mm/aaaa > : ");
scanf("%d/%d/%d",&comp[op -1].datai[0],&comp[op -1].datai[1],&comp[op -1].datai[2]);
diai = comp[op -1].datai[0]+ comp[op -1].datai[1]*30+ comp[op -1].datai[2]*365;
comp[op -1].dat = diai;for(o =0; o < i -1; o++)for(j =0; j < i -1; j++){if(comp[j].dat>comp[j +1].dat){
aux = comp[j];
comp[j]= comp[j +1];
comp[j +1]= aux;}}
fflush(stdin);}if(opi ==4){
printf("\n Novo horario inicial < hh:mm > : ");
scanf("%d:%d",&comp[op -1].horai[0],&comp[op -1].horai[1]);
horai = comp[op -1].horai[0]*60+ comp[op -1].horai[1];
horaf = comp[op -1].horaf[0]*60+ comp[op -1].horaf[1];
comp[op -1].totalh = horaf - horai;
fflush(stdin);}if(opi ==5){
printf("\n Nova data final < dd/mm/aaaa > : ");
scanf("%d/%d/%d",&comp[op -1].dataf[0],&comp[op -1].dataf[1],&comp[op -1].dataf[2]);
fflush(stdin);}if(opi ==6){
printf("\n Novo horario final < hh:mm > : ");
scanf("%d:%d",&comp[op -1].horaf[0],&comp[op -1].horaf[1]);
fflush(stdin);}if(opi ==7){
printf("\n Novo nome para o local : ");
scanf("%[^\n]", comp[op -1].nome);
fflush(stdin);}if(opi ==8){
printf("\n Novo estado : ");
scanf("%[^\n]", comp[op -1].estado);
fflush(stdin);}if(opi ==9){
printf("\n Nova cidade : ");
scanf("%[^\n]", comp[op -1].cidade);
fflush(stdin);}if(opi ==10){
printf("\n Novo cep < _____-___ > : ");
scanf("%[^\n]", comp[op -1].cep);
fflush(stdin);}if(opi ==11){
printf("\n Nova rua : ");
scanf("%[^\n]", comp[op -1].rua);
fflush(stdin);}if(opi ==12){
printf("\n Novo numero : ");
scanf("%[^\n]", comp[op -1].num);
fflush(stdin);}if(opi ==13){
printf("\n Novo Bairro : ");
scanf("%[^\n]", comp[op -1].bairro);
fflush(stdin);}if(opi ==14){
fflush(stdin);
menu();}
printf("\n\nDeseja.\n1. Voltar ao menu\n2. Editar mais compromissos.\n\n");
scanf("%d",&op);if(op ==1)
menu();if(op ==2)goto in;}else{
printf("não há compromissos marcados.\n\n1. Voltar ao menu.\n\n");
scanf("%[^\n]", lixo);
fflush(stdin);
menu();}}void exibirmais(){
system("cls");
printf("Titulo : %s\n\nDescricao :\n%s\n\n", comp[op -1].titulo, comp[op -1].descrip);
printf("Inicio : %d/%d/%d %d:%d\n", comp[op -1].datai[0], comp[op -1].datai[1], comp[op -1].datai[2], comp[op -1].horai[0], comp[op -1].horai[1]);
printf("Final : %d/%d/%d %d:%d\n\n", comp[op -1].dataf[0], comp[op -1].dataf[1], comp[op -1].dataf[2], comp[op -1].horaf[0], comp[op -1].horaf[1]);
printf("O evento ocorrera no local : %s\n\n", comp[op -1].nome);
printf("%s, %s, CEP : %s\n\n", comp[op -1].cidade, comp[op -1].estado, comp[op -1].cep);
printf("Bairro : %s, Rua.%s - n %s\n\n", comp[op -1].bairro, comp[op -1].rua, comp[op -1].num);
printf("0. Voltar ao menu.\n\n");
scanf("%d",&op);
scanf("%[^\n]", lixo);
fflush(stdin);
menu();}void exibir(){
system("cls");int j;if(i !=0){for(j =0; j < i; j++){
printf("%d - Titulo: %s\n\n", j +1, comp[j].titulo);
printf("Descricao:\n%s\n\n", comp[j].descrip);
printf("Inicio : %d/%d/%d %d:%d\n", comp[j].datai[0], comp[j].datai[1], comp[j].datai[2], comp[j].horai[0], comp[j].horai[1]);
printf("Final : %d/%d/%d %d:%d", comp[j].dataf[0], comp[j].dataf[1], comp[j].dataf[2], comp[j].horaf[0], comp[j].horaf[1]);
printf("\n-------------------------\n");}
printf("\n0. Voltar ao menu.\nOu digite o numero do evento que deseja saber mais detalhes.\n");
scanf("%d",&op);if(op ==0){
fflush(stdin);
menu();}else{
fflush(stdin);
exibirmais();}}else{
printf("não há compromissos marcados.\n\n1. Voltar ao menu.\n\n");
scanf("%[^\n]", lixo);
fflush(stdin);
menu();}}void excluir(){
system("cls");if(i !=0){
printf("deseja apagar qual compromisso?\n\n");int j;for(j =0; j < i; j++)
printf("%d. %s\n", j +1, comp[j].titulo);
scanf("%d",&op);for(j = op -1; j < i -1; j++){
comp[j]= comp[j +1];}
i--;
printf("Deseja:\n1. Apagar mais compromissos.\n2. Voltar ao menu\n\n");
scanf("%d",&op);if(op ==1){
fflush(stdin);
excluir();}elseif(op ==2)
menu();}else{
printf("não há compromissos marcados.\n\n1. Voltar ao menu.\n\n");
scanf("%[^\n]", lixo);
fflush(stdin);
menu();}}void menu(){
system("cls");
printf("Agenda compromissos\n\n");
printf("1. Cadastrar compromissos\n");if(i !=0){
printf("2. Exibir compromissos\n");
printf("3. Excluir compromissos\n");
printf("4. Editar compromissos\n");}
printf("0. Sair\n\n");
scanf("%d",&op);if(op ==1){
fflush(stdin);
cadastrar();}elseif(op ==2){
fflush(stdin);
exibir();}elseif(op ==3){
fflush(stdin);
excluir();}elseif(op ==4){
fflush(stdin);
editar();}elseif(op ==0){
fflush(stdin);return0;}}int main(){int j;
fi = fopen("save\\i.txt","r");
fscanf(fi,"%d",&i);if(i){
file = fopen("save\\save.txt","r");
fflush(stdin);for(j =0; j < i; j++){
fgets(comp[j].titulo,100, file);
fgets(comp[j].descrip,200, file);
fflush(stdin);
fscanf(file,"%d/%d/%d\n",&comp[j].datai[0],&comp[j].datai[1],&comp[j].datai[2]);
fscanf(file,"%d:%d\n",&comp[j].horai[0],&comp[j].horai[1]);
fscanf(file,"%d/%d/%d\n",&comp[j].dataf[0],&comp[j].dataf[1],&comp[j].dataf[2]);
fscanf(file,"%d:%d\n",&comp[j].horaf[0],&comp[j].horaf[1]);
fflush(stdin);
fgets(comp[j].nome,100, file);
fgets(comp[j].estado,100, file);
fgets(comp[j].cidade,100, file);
fgets(comp[j].cep,100, file);
fgets(comp[j].rua,100, file);
fgets(comp[j].num,100, file);
fgets(comp[j].bairro,100, file);
fflush(stdin);}
fclose(fi);
fclose(file);}
menu();if(fi != NULL){
file = fopen("save\\save.txt","w");
fflush(stdin);for(j =0; j < i; j++){
fflush(stdin);
fprintf(file,"%s\n", comp[j].titulo);
fprintf(file,"%s\n", comp[j].descrip);
fprintf(file,"%d/%d/%d\n", comp[j].datai[0], comp[j].datai[1], comp[j].datai[2]);
fprintf(file,"%d:%d\n", comp[j].horai[0], comp[j].horai[1]);
fprintf(file,"%d/%d/%d\n", comp[j].dataf[0], comp[j].dataf[1], comp[j].dataf[2]);
fprintf(file,"%d:%d\n", comp[j].horaf[0], comp[j].horaf[1]);
fprintf(file,"%s\n", comp[j].nome);
fprintf(file,"%s\n", comp[j].estado);
fprintf(file,"%s\n", comp[j].cidade);
fprintf(file,"%s\n", comp[j].cep);
fprintf(file,"%s\n", comp[j].rua);
fprintf(file,"%s\n", comp[j].num);
fprintf(file,"%s\n", comp[j].bairro);}
fclose(file);}return0;}
*dica, antes de executar meu programa, criem uma pasta "save" na mesma pasta aonde forem compilar, pro sistema funcionar direitinho.
Com meu programa eu quero ver se existe um arquivo "i.txt", se ele existir é porque existe dados cadastrados, esse meu txt se atualiza toda vez que um cadastro novo é inserido, e inicializa a variavel global i que eu tenho no meu programa pra eu poder saber aonde eu posso cadastrar e quantos cadastros já existem.
O meu problema e na hora de salvar no arquivo, se vocês fizerem um cadastro, fecharem o programa e depois abrirem, o sistema funciona, mas se você fechar o programa novamente ele simplismente adiciona espaços aonde não precisa no salvamento e assim na hora da leitura o programa nunca sabe como ler.
exemplo:
salvei 1 1 1 1 no save.txt
1 passada - txt fica assim. 1\n1\n1\n1\n
2 passada - txt fica assim. 1\n\n1\n\n1\n\n1\n\n
esses \n significam uma quebra de linha no arquivo mesmo, igual apertar enter.
preciso que não importa quantas passadas, quero que o arquivo sempre fique 1\n1\n1\n1\n.
Pergunta
Brayan Nayou
*dica, antes de executar meu programa, criem uma pasta "save" na mesma pasta aonde forem compilar, pro sistema funcionar direitinho.
Com meu programa eu quero ver se existe um arquivo "i.txt", se ele existir é porque existe dados cadastrados, esse meu txt se atualiza toda vez que um cadastro novo é inserido, e inicializa a variavel global i que eu tenho no meu programa pra eu poder saber aonde eu posso cadastrar e quantos cadastros já existem.
O meu problema e na hora de salvar no arquivo, se vocês fizerem um cadastro, fecharem o programa e depois abrirem, o sistema funciona, mas se você fechar o programa novamente ele simplismente adiciona espaços aonde não precisa no salvamento e assim na hora da leitura o programa nunca sabe como ler.
exemplo:
salvei 1 1 1 1 no save.txt
1 passada - txt fica assim. 1\n1\n1\n1\n
2 passada - txt fica assim. 1\n\n1\n\n1\n\n1\n\n
esses \n significam uma quebra de linha no arquivo mesmo, igual apertar enter.
preciso que não importa quantas passadas, quero que o arquivo sempre fique 1\n1\n1\n1\n.
podem me ajudar pf?
Editado por Brayan NayouLink para o comentário
Compartilhar em outros sites
0 respostass 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.