From: C. <al...@br...> - 2000-10-25 21:24:32
|
Eae coders, tudo jóia ? Bom, andei dando mais uma mexidinha naquelas funcs de acesso ao arquivo de configuração. Bom, agora estão todas Ok. Testadas e funcionando... :) Tinha uns ponteiros bêbados na list_isp, eu resolvi de uma forma meio inusitada (ainda vou otimizar o código depois): Uma função adicional, que retorna quantos provedores estão cadastrados. depois, fazemos um laço e obtemos da list_isp um provedor de cada vez... :) Assim: retorno = number_isps(fileconfig); if (!retorno) { printf("Nenhum provedor cadastrado!\n\n"); exit(1); } printf("Lista de provedores:\n\n"); for (i = 1; i <= retorno; i++) { vetor = list_isp(fileconfig, i); printf("\t* %s\n", vetor); vetor = NULL; } number_isps() retorna quantos provedores estão cadastrados. Passa-se então prá função list_isp um argumento que diz qual o provedor que ele deve retornar (1, 2, 3, ...) Funciona bem... tou até mandando um programinha que eu fiz aki prá testar essas funções... :) Bom pessoal, ainda tou meio perdido aki nas funções de gravação do arquivo de configuração. Estou pensando no seguinte: As famosas e dramáticas (né Marcelo ? :))) listas encadeadas!!! Através delas, armazenaríamos todo o arquivo de configuração na memória. Fica fácil alterar os dados que estão na memória. E depois, gravamos o arquivo todo novamente, inclusive as partes que não foram alteradas... ou seja, em vez de abrir prá "appendar" 'a' abrimos prá gravar 'w+'. Eu sei que tá meio paia essa minha lógica, mas é que eu testei outras formas de implementação aki e simplesmente não funcionou :) Tipo, o posicionamento no arquivo para efetuar a gravação. Como saber se eu estou no local correto antes de gravar (fprintf(dados...))... a função que permite "andar" dentro do arquivo é a fseek, mas ela é ruim pacas de se trabalhar ;-) Ô Amauri, vc naum tem nada que sirva de exemplo por aí não ? :)))) É isso ae coders, TODAS as sugestões são bem-vindas... []'s -- André Casteliano Analista de Sistemas +-=-=[ dig...@us...]=-=-+ [ Linux User: # 178853 Machine: # 79923 ] [ Linux Heavy User - Powered by Slackware 7.1 ] [ http://www.geocities.com/andre_casteliano/ ] +-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-+ [ LinuxCall - The Linux Dialer ] [ http://linuxcall.sourceforge.net ] +-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-+ |