Pular para o conteúdo

Slavar e abrir arquivos em C [RESOLVIDO]

Responder tópico
  • Denunciar
  • Indicar

1. Slavar e abrir arquivos em C [RESOLVIDO]

Enviado em 12/11/2012 - 18:23h

Boa tarde pessoal,
Estou com um probleminha em C.
Tenho uma pequenha aplicação em C e um dos módulos dela aparece para o usuário assim;
+------------------------------+
| 1 Para ativar o lembrete. |
| 2 Para desativar o lembrete. |
| 3 Para sair. |
+------------------------------+

Situacao atual : Nao definida
Escolha uma opcao:

o cód é esse;

#include <stdio.h>
#include <windows.h>

main ()
{
int ativ;
int status;
system("cls");
printf("+------------------------------+\n");
printf("| 1 Para ativar o lembrete. |\n");
printf("| 2 Para desativar o lembrete. |\n");
printf("| 3 Para sair. |\n");
printf("+------------------------------+\n\n");
if (status==0)
printf("\nSituacao atual : Desativado");
else if (status==1)
printf("\nSituacao atual : Ativado");
else
printf("Situacao atual : Nao definida");
printf("\nEscolha uma opcao: ");
scanf("%d",&ativ);

if (ativ==1)
{
system("cls");
system("D:/ativ.bat");
system("cls");
status==1;
return main();
}
else if (ativ==2)
{
system("cls");
system("D:/desativ.bat");
system("cls");
status==0;
return main();
}
else if (ativ==3)
exit;
else
{
printf("\nOpcao invalida!\n");
Sleep(500);
system("pause");
return main();
}

}

no if é possivel ver que ele grava o status de acordo com a opção que a pessoa escolher porém ele grava apenas no programa e se eu executar denovo depois ele volta pro DEFAUL então eu pensei em gravar em um arquivo a opção e depois ele pega de novo.
Se que tem como fazer isso com fopen porén tudo que eu achei no google não funcionou do jeito que eu quero, ou funcinou e eu não entendi ou nem compilou.
Tem como você mes mostrarem como gravar esse arquivo?
ou uma forma melhor?
Desde já agradeço

Responder tópico

3. Re: Slavar e abrir arquivos em C [RESOLVIDO]

Enviado em 12/11/2012 - 21:29h

nao entendi bem o que vc quer, mas para escrever em um arquivo veja:

http://www.cplusplus.com/reference/clibrary/cstdio/fopen/

e pode ser assim tambem para escrever em um arquivo texto:
-------------------------------
system ("echo alguma_coisa > arquivo.bat"); // primeiro cria ...
system ("echo segunda_linha >> arquivo.bat"); // observe o >>
--------------------------------

EDITADO ...

DICAS:
01 - Colocar no final da funcao main: return 0;
02 - a variavel local status nunca vai ser iniciada com o valor 1 ou 0 ... variavel local inicia com valor indefinido.
03 - para melhor organizacao utilizar a dica ( case ) do colega acima... apesar que (switch/case) não ser indicado para loops em que exige velocidade de execução, mas não é o caso agora .

4. Re: Slavar e abrir arquivos em C [RESOLVIDO]

Enviado em 12/11/2012 - 21:54h

Só uma dica, acho mais interessante você utilizar a estrutura CASE, não?

5. Re: Slavar e abrir arquivos em C [RESOLVIDO]

Enviado em 13/11/2012 - 11:29h

Esse return main() também não lhe ajuda, porque mesmo que você passe a inicializar o valor da variável status, como sempre deveria ter feito, esse valor será sobrescrito na nova invocação de main(), a não ser que você transforme a variável em global. O melhor seria você fazer um loop do...while, mas até mesmo o goto (sim, goto!) é melhor do que a forma que você usou.

Quanto ao uso de switch/case, acho bobagem para poucas opções. Na maioria dos compiladores, um switch, depois de compilado, vira o equivalente exato de uma tripa de if/else if/else if/.../else (provavelmente a única grande vantagem é ter de digitar um pouco menos de caracteres no código fonte -- o que, reconheço, pode ajudar a evitar erros bobos).

6. Re: Slavar e abrir arquivos em C [RESOLVIDO]

Enviado em 13/11/2012 - 14:01h

Eu consegui fazer parte do que eu queria com esse cód.

#include <stdio.h>
#include <windows.h>

main ()
{
int ativ;
int status;
FILE *arquivo;
system("cls");
printf("+------------------------------+\n");
printf("| 1 Para ativar o lembrete. |\n");
printf("| 2 Para desativar o lembrete. |\n");
printf("| 3 Para sair. |\n");
printf("+------------------------------+\n\n");
if (status==0)
printf("\nSituacao atual : Desativado");
else if (status==1)
printf("\nSituacao atual : Ativado");
else
printf("Situacao atual : Nao definida");
printf("\nEscolha uma opcao: ");
scanf("%d",&ativ);

if (ativ==1)
{
arquivo = fopen("D:/status.txt","w");

if(arquivo != NULL)
{
fprintf(arquivo,"1\n");
fclose (arquivo);
}
system("cls");
system("D:/ativ.bat");
system("cls");
return main();
}
else if (ativ==2)
{
arquivo = fopen("D:/status.txt","w");

if(arquivo != NULL)
{
fprintf(arquivo,"0\n");
fclose (arquivo);
}
system("cls");
system("D:/desativ.bat");
system("cls");
return main();
}
else if (ativ==3)
exit;
else
{
printf("\nOpcao invalida!\n");
Sleep(500);
system("pause");
return main();
}

}

no entanto, consegui apenas gravar no arquivo o valor 1 ou 0 mas preciso de ler para colocar no lá no começo a situação.

Responder tópico

Responder tópico

Entre na sua conta para responder.

Fazer login para responder