Jump to content
Fórum Script Brasil
  • 0

O que tem de errado com esse código


PerguntasScript
 Share

Question

Ele executa, mais na tela não aparece nada!

 

#include <iostream>

#include <time.h>

 

/* Função format - Retornar um ponteiro para uma variavel do tipo char com o valor da conversão */

 

char *format(int number){

   

    char *retorno;

    char ret[100];

 

    if (number < 10){

       

        sprintf(ret,"0%d",number); /* Retorna o resultado em uma variável */

        retorno = ret;

        return retorno;

       

    } else {

       

        sprintf(ret,"%d",number);

        retorno = ret;

        return retorno;

       

    }

   

} /* Fim Função Format */

 

/* Função que retorna a hora */

 

char *hora(void){

     

    int hora;

    int minuto;

    int segundo;

   

    char varHora[100];

    char varMinuto[100];

    char varSegundo[100];

    char varHoraFormatada[100];

    char *retornoHoraFormatada;

   

    struct tm *local;

    time_t t;

    t = time(NULL);

    local = localtime(&t);

     

   /* Obter hora, minuto e segundo e os alocar em uma variavel do tipo */

  

   hora = local -> tm_hour;

   minuto = local -> tm_min;

   segundo = local -> tm_sec;

  

   /* Converter os valores retornados pelos ponteiros da função em variaveis do tipo char */

  

   sprintf(varHora,"%s",format(hora));

   sprintf(varMinuto,"%s",format(minuto));

   sprintf(varSegundo,"%s",format(segundo));

  

   /* criar a variavel de retorno dos dados e cria um ponteiro para essa variavel */

  

   sprintf(varHoraFormatada,"%s:%s:%s",varHora,varMinuto,varSegundo);

  

   /* Retorna hora no formato hh:mm:ss com um ponteiro */

  

   retornoHoraFormatada = varHoraFormatada;

  

   return retornoHoraFormatada;

  

} /* Fim Função Hora */

 

int main(){

   

    char horaSistema[100];

 

    sprintf(horaSistema,"%s",hora());

   

    printf("%s\n",horaSistema);

   

}

 

/* Mudar o Fuso Horário */

 

 

Edited by PerguntasScript
Link to comment
Share on other sites

2 answers to this question

Recommended Posts

  • 0

ao parecer o sprintf dentro de main da problemas na hora de asignar o valor de retorno a funçao hora o string horaSistema. Eu troquei sprintf ( horaSistema, "%s", hora()  ); por strcpy(horaSistema,(char*)hora()); e funcionou corretamente, mas não sei por que isso.

 

#include <iostream>
#include <string.h>
#include <time.h>

/* Função format - Retornar um ponteiro para uma variavel do tipo char com o valor da conversão */
char *format ( int number ) {
    char *retorno;
    char ret[100];

    if ( number < 10 ) {
        sprintf ( ret, "0%d", number ); /* Retorna o resultado em uma variável */
        retorno = ret;
        return retorno;
        
    } else {
        sprintf ( ret, "%d", number );
        retorno = ret;
        return retorno;
        
    }

} /* Fim Função Format */

/* Função que retorna a hora */
char *hora ( void ) {
    int hora;
    int minuto;
    int segundo;
    
    char varHora[100];
    char varMinuto[100];
    char varSegundo[100];
    char varHoraFormatada[100];
    char *retornoHoraFormatada;
    
    struct tm *local;
    time_t t;
    t = time ( NULL );
    
    local = localtime ( &t );
    
    /* Obter hora, minuto e segundo e os alocar em uma variavel do tipo */
    hora = local -> tm_hour;
    minuto = local -> tm_min;
    segundo = local -> tm_sec;
    
    /* Converter os valores retornados pelos ponteiros da função em variaveis do tipo char */
    sprintf ( varHora, "%s", format ( hora ) );
    sprintf ( varMinuto, "%s", format ( minuto ) );
    sprintf ( varSegundo, "%s", format ( segundo ) );
    
    /* criar a variavel de retorno dos dados e cria um ponteiro para essa variavel */
    sprintf ( varHoraFormatada, "%s:%s:%s", varHora, varMinuto, varSegundo );
    
    /* Retorna hora no formato hh:mm:ss com um ponteiro */
    retornoHoraFormatada = varHoraFormatada;
    
    return (char*)retornoHoraFormatada;
    
} /* Fim Função Hora */



int main() {
    char horaSistema[100];
    
    //sprintf ( horaSistema, "%s", hora()  );
    strcpy(horaSistema,(char*)hora());
    
    
    printf ( "%s\n", horaSistema );
    
    std::cin.ignore();
    return 0;
}/* Mudar o Fuso Horário */

Prove e me diga si funciona. o programa retorna um string com a hora atual do sistema, nada mais.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share



  • Forum Statistics

    • Total Topics
      149.9k
    • Total Posts
      646.8k
×
×
  • Create New...