Slavar e abrir arquivos em C [RESOLVIDO]

1. Slavar e abrir arquivos em C [RESOLVIDO]

vinicius
Vinicius_Souza

(usa Ubuntu)

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


  


2. MELHOR RESPOSTA

???
gokernel

(usa Linux Mint)

Enviado em 13/11/2012 - 17:39h

complicado esse seu código e não sei o que vc que fazer, mas para ler um arquivo use FGETS:

http://cplusplus.com/reference/clibrary/cstdio/fgets/

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

???
gokernel

(usa Linux Mint)

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]

Daniel Marchi
DMS_

(usa elementary OS)

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]

Paulo
paulo1205

(usa Ubuntu)

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]

vinicius
Vinicius_Souza

(usa Ubuntu)

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.






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts