Olá Visitante

Pessoal preciso de ajuna num programa em c

  • 13 Respostas
  • 2028 Visualizações
*

Offline vitordtr46

  • **
  • 308
  • Sexo: Masculino
Pessoal preciso de ajuna num programa em c
« em: Junho 02, 2009, 12:24:05 pm »
Bem pessoal o problema é o seguinte.


eu tenho esta estrutura

struct tipo_de_desastre_comum
{

char denimonacao[20];
float latitude,longitude,danos_materiais;
int mes,dia,ano,hora,minuto,danos_humanos_mortes,danos_humanos_feridos,tipo,sub_tipo;

};

struct tipo_de_desastre_comum registo[2];


e agora queria guardar o conteudo dests estrutura num ficheiro txt

como é que faço??

*

Offline Blue_DTR125

  • *********
  • 5362
  • Sexo: Feminino
Re: Pessoal preciso de ajuna num programa em c
« Responder #1 em: Junho 02, 2009, 12:37:36 pm »
Não é só copiar para o bloco de notas e guardar?

*

Senso

Re: Pessoal preciso de ajuna num programa em c
« Responder #2 em: Junho 02, 2009, 01:18:13 pm »
em c não sei, em java com um file writter

*

Offline klm

  • ***
  • 487
Re: Pessoal preciso de ajuna num programa em c
« Responder #3 em: Junho 02, 2009, 03:43:51 pm »
Assim de repente não sei, mas lembro-me que tens que usar um comando para abrir o .txt e outro comando para escrever... se nao conseguires mesmo saber e precisares diz que vejo nos apontamentos...


*

Offline Blue_DTR125

  • *********
  • 5362
  • Sexo: Feminino
Re: Pessoal preciso de ajuna num programa em c
« Responder #5 em: Junho 02, 2009, 04:09:47 pm »
Que raio, eu fazia isso muito mais simples  :embarrass:

*

Senso

Re: Pessoal preciso de ajuna num programa em c
« Responder #6 em: Junho 02, 2009, 04:20:34 pm »
em java declarava-se um novo scanner, criava-se um file in e um file out ou só um file out com o nome que se queria e depois era fazer um writer ou algo com nome parecido, ve os links, deve ser isso, pelo menos parece

*

Offline klm

  • ***
  • 487
Re: Pessoal preciso de ajuna num programa em c
« Responder #7 em: Junho 02, 2009, 04:20:52 pm »
Que raio, eu fazia isso muito mais simples  :embarrass:
LOL

*

Offline vitordtr46

  • **
  • 308
  • Sexo: Masculino
Re: Pessoal preciso de ajuna num programa em c
« Responder #8 em: Junho 02, 2009, 08:09:26 pm »
senso ajudou muito...
tipo eu tenho ums estrutura maior que essa no meu programa e queris gravar logo todo o seu conteudo no txt, mas a função que em c existe para fazer isso só funciona com binario tudo o que seja strings n dá.
Tem de ser feito tudo á lá pata com fscanf  um ciclo for e muitos if,s :laugh:
O pior é que tenho aqui um txt com 5 mil linhas para ler e para o qual vou ter de utilizar alocação dinamica de memória >:(

*

Senso

Re: Pessoal preciso de ajuna num programa em c
« Responder #9 em: Junho 02, 2009, 08:52:44 pm »
até java lê texto, portanto isso deve dar para fazer..

*

Offline ^CIENTISTA^

  • WebMaster
  • *********
  • 3926
  • Sexo: Masculino
  • CLubDTR WebMaster !!!
    • ClubDTR
Re: Pessoal preciso de ajuna num programa em c
« Responder #10 em: Junho 02, 2009, 11:53:09 pm »
nice... =)

*

Offline vitordtr46

  • **
  • 308
  • Sexo: Masculino
Re: Pessoal preciso de ajuna num programa em c
« Responder #11 em: Junho 03, 2009, 11:04:03 am »
olha como ficou a função para escrever no ficheiro os dados inseridos :sleepy: 8) :D :death:


void escreve_ficheiro(int k ,struct tipo_de_desastre_comum *registo,struct tipo_de_desastre_adicional *registo_adicional )
{
   FILE *f;


   

   if ((f=fopen("desastres.txt","w")) == NULL)
   {
      printf ("\nNao foi encontrado o ficheiro desastres.txt\n");

     return;
   }
   else

   fprintf(f,"%d\t%d\t%s\t%0.2f,%0.2f\t%d-%d-%d\t%d:%d\t%.2f\t%d\t%d",registo[k].tipo,registo[k].sub_tipo,registo[k].denimonacao,registo[k].latitude,registo[k].longitude,
   registo[k].dia,registo[k].mes,registo[k].ano,registo[k].hora,registo[k].minuto,registo[k].danos_materiais,registo[k].danos_humanos_mortes,registo[k].danos_humanos_feridos);

   if(registo[k].tipo==1 && registo[k].sub_tipo==1)
   {
      fprintf(f,"\t%s\t%0.2f\n",registo_adicional[k].causa_avalanche,registo_adicional[k].dimensao_avalanche);

   }
   else
      if(registo[k].tipo==1 && registo[k].sub_tipo==2)
      {
         fprintf(f,"%0.2f\t%0.1f\t%d\n",registo_adicional[k].profundidade_sismo,registo_adicional[k].magnitude,registo_adicional[k].MMI);
      }
      else
         if(registo[k].tipo==1 && registo[k].sub_tipo==3)
         {
            fprintf(f,"%0.2f\t%s\t%d\t%s\n",registo_adicional[k].elevacao,registo_adicional[k].tipo_vulcao,registo_adicional[k].VEI,registo_adicional[k].causa_fatalidades_vulcao);
         }
         else
            if(registo[k].tipo==1 && registo[k].sub_tipo==4)
            {
               fprintf(f,"%s\t%s\t%s\n",registo_adicional[k].causa_deslizamento,registo_adicional[k].material_deslizamento,registo_adicional[k].tipo_movimento);
            }
            else
               if(registo[k].tipo==2 && registo[k].sub_tipo==1)
               {
                  fprintf(f,"%0.2f\t%0.2f\t%0.2f\n",registo_adicional[k].precipitacao,registo_adicional[k].duracao_precipitacao,registo_adicional[k].nivel_rio);
               }
               else
                  if(registo[k].tipo==2 && registo[k].sub_tipo==2)
                  {
                     fprintf(f,"%d\t%0.2f\t%0.2\n",registo_adicional[k].PDSI,registo_adicional[k].duracao_seca,registo_adicional[k].area_afectada_seca);
                  }
                  else
                     if(registo[k].tipo==2 && registo[k].sub_tipo==3)
                     {
                        fprintf(f,"%0.2f\t%0.2f\t%0.2f\n",registo_adicional[k].intencidade_calor,registo_adicional[k].duracao_calor,registo_adicional[k].dimensao_calor);
                     }
                     else
                        if(registo[k].tipo==2 && registo[k].sub_tipo==4)
                        {
                           fprintf(f,"%0.2f\t%0.2f\t%0.2f\n",registo_adicional[k].velocidade_vento,registo_adicional[k].dimensao_vento,registo_adicional[k].duracao_vento);
                        }
                        else
                           if(registo[k].tipo==2 && registo[k].sub_tipo==5)
                           {
                              fprintf(f,"%s\t%0.2f\n",registo_adicional[k].categoria,registo_adicional[k].dimensao_ciclone);
                           }
                           else
                              if(registo[k].tipo==3 && registo[k].sub_tipo==1)
                              {
                                 fprintf(f,"%0.2f\t%s\t%s-%0.2f\n",registo_adicional[k].area_ardida_florestal,registo_adicional[k].causa_incendio,registo_adicional[k].tipo_vegetacao,registo_adicional[k].tipo_vegetacao_ha);
                              }
                              else
                                 if(registo[k].tipo==3 && registo[k].sub_tipo==2)
                                 {
                                    fprintf(f,"%0.2f\t%s\t%s\t%0.2f\n",registo_adicional[k].dimensao_fogo_urbano,registo_adicional[k].causa_fogo_urbano,registo_adicional[k].tipo_infra_estrutura,registo_adicional[k].tipo_infra_estrutura_per);
                                 }
                                 else
                                    if(registo[k].tipo==4 && registo[k].sub_tipo==1)
                                    {
                                       fprintf(f,"%s\t%s\t%s\t%d\n",registo_adicional[k].agente_epidemia,registo_adicional[k].pais_epidemia_isolamento,registo_adicional[k].pais_epidemia_origem,registo_adicional[k].numero_epidemia);
                                    }
                                    else
                                       if(registo[k].tipo==4 && registo[k].sub_tipo==2)
                                       {
                                          fprintf(f,"%0.2f\t%d:%d\t%0.2f\n",registo_adicional[k].distancia_tsunami,registo_adicional[k].propagacao_tsunami_hora,registo_adicional[k].propagacao_tsunami_minuto,registo_adicional[k].altura_tsunami);
                                       }
                                       else
                                          if(registo[k].tipo==4 && registo[k].sub_tipo==3)
                                          {
                                             fprintf(f,"%0.2f\t%0.2f\t%0.2f\t%s\n",registo_adicional[k].dimensao_meteorito_massa,registo_adicional[k].dimensao_meteorito_volume,registo_adicional[k].dimensao_impacto,registo_adicional[k].composicao_meteorito);
                                          }



   fclose(f);




}

*

Senso

Re: Pessoal preciso de ajuna num programa em c
« Responder #12 em: Junho 03, 2009, 12:45:39 pm »
essa cadeia de else if's ficava mais bonita se calhar com um case, não?

*

Offline vitordtr46

  • **
  • 308
  • Sexo: Masculino
Re: Pessoal preciso de ajuna num programa em c
« Responder #13 em: Junho 03, 2009, 07:01:49 pm »
sim ficava mais bonito mas para isso tinha de ter dois switch case um para o tipo e outro para o sub tipo.