thinkabout Posted June 9, 2013 at 08:41 PM Report #511787 Posted June 9, 2013 at 08:41 PM Boas como consigo devolver uma string para depois imprimir as horas noutras funções ? int main (int argc, char * argv[]) { printf("foi efectuada a saida as %s", horas()); } horas.c const char * horas() { time_t horatual; struct tm * formato; // Ponteiro para a estrutua http://www.cplusplus.com/reference/ctime/tm/ char stringhoras[9]; // Espaço para guardar as horas no formato "HH:MM:SS\0" horatual = time(NULL); // Se a função devolver -1, dava erro. (não estou a fazer o check). formato = localtime(&horatual); strftime(stringhoras, sizeof(stringhoras), "%H:%M:%S", formato); // Onde vai guardar , o tamanho do que vai guardar(podia por 9 directamente, mas não se tornava genérico), output format, a onde vai buscar a string). puts(stringhoras); return stringhoras; } output actual foi efectuada a saida as ☺ ( o boneco até parece que está a gozar comigo)
pmg Posted June 9, 2013 at 09:28 PM Report #511791 Posted June 9, 2013 at 09:28 PM (edited) O teu problema é que o array stringhoras só existe dentro da função horas(). Quando fazes return stringhoras; o array é automaticamente convertido para um ponteiro para o seu primeiro elemento, e é esse ponteiro que é devolvido. Mas imediatamente a seguir o array deixa de existir, fazendo o ponteiro apontar para um endereço inválido. A meu ver, a melhor solução passa por definires o espaço para a string na função chamadora e preencheres esse espaço dentro da tua função /* destin deve apontar para um espaço de memória com pelo menos 9 caracteres */ void horas(char *destin) { /* mais ou menos o mesmo que já tens */ strcpy(destin, stringhoras); } e depois chamas a função, por exemplo, assim int main(int argc, char **argv) { char hora[20]; horas(hora); printf("hora: %s\n", hora); } Edited June 9, 2013 at 09:29 PM by pmg What have you tried? Não respondo a dúvidas por PM A minha bola de cristal está para compor; deve ficar pronta para a semana. Torna os teus tópicos mais atractivos e legíveis usando a tag CODE para colorir o código!
thinkabout Posted June 9, 2013 at 10:02 PM Author Report #511798 Posted June 9, 2013 at 10:02 PM Obrigado , já está a bombar o que queria que era depois usar num fprintf.
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now