Ir ao conteúdo

Posts recomendados

Postado

Queria salvar um arquivo diferente a cada dia de utilização do programa desenvolvido em C;

 

//Estou usando o "fopen" para salvar e editar o arquivo;
arquivo_envio = fopen("Enviar para Secretária de Saúde.txt", "at");

/* Mas queria colocar uma var que seria diferente a cada dia de execução, já sei usar 
a função de data atual, só preciso colocar ela no nome do arquivo!*/

//Exemplo:
arquivo_envio = fopen("Enviar para Secretária de Saúde - %s.txt", string_data, "at");
//mas não sei a sintaxe certa para isso....

 

Agradeço desde já....

Postado

Poste um programa inteiro, compilável.

 

char* get_ts()
{  // "yyyy-mm-dd hh:mm:ss"
    time_t agora;
    time(&agora);  // hora
    struct tm* t_info     = localtime(&agora);
    char*      time_stamp = (char*)malloc(20);
    strftime(time_stamp, 20, "%Y-%m-%d %H:%M:%S", t_info);
    return time_stamp;
}

 

Essa função devolve o que está escrito no comentário.  Adapte para seu uso. strftime() fica em time.h

 

Evite acentos e espaços em nomes de arquivo. Só traz problemas

 

EXEMPLO

 

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>

char* get_ts();  // formato "yyyy-mm-dd hh:mm:ss"
char* get_fname(const char*);

int main(void)
{
    // testa get_ts();
    char* ts = get_ts();
    printf("timestamp: %s\n", ts);
    free(ts);

    // chama get_fname e cria o arquivo
    char* nome = get_fname("Envio-");
    printf("Nome: \"%s\"\n", nome);
    FILE* f = fopen(nome, "w");
    if (f != NULL)
    {
        printf("criou: \"%s\"\n", nome);
        fclose(f);
        free(nome);
    }
    return 0;
};  // main()

char* get_ts()
{  // "yyyy-mm-dd-hhmm"
    time_t agora;
    time(&agora);  // hora
    struct tm* t_info     = localtime(&agora);
    char*      time_stamp = (char*)malloc(20);
    strftime(time_stamp, 20, "%Y-%m-%d-%H%M", t_info);
    return time_stamp;
}

char* get_fname(const char* prefixo)
{   
    char* ts = get_ts();
    char* nome = (char*)malloc(4+1+strlen(ts)+strlen(prefixo));
    sprintf(nome, "%s%s.txt", prefixo, ts);
    free(ts);
    return nome;
}

 

Mostra

 

timestamp: 2021-11-22-1249
Nome: "Envio-2021-11-22-1249.txt"
criou: "Envio-2021-11-22-1249.txt"

 

:) e cria o arquivo...

  • Amei 1

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...