Ir para conteúdo
Fórum Script Brasil
  • 0

O que tem de errado com esse código


PerguntasScript

Pergunta

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 */

 

 

Editado por PerguntasScript
Link para o comentário
Compartilhar em outros sites

2 respostass a esta questão

Posts Recomendados

  • 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 para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...