Ir ao conteúdo
  • Cadastre-se

C Nomear arquivo com variável em C


Matheus Patrick

Posts recomendados

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á....

Link para o comentário
Compartilhar em outros sites

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

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...

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!