Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

gu1

É possivel inicerir data para criar um arquivo txt ou uma planilia

Recommended Posts

Gostaria de saber se é possivel inicerir data para criar um arquivo txt:

Bem o meu objetivo é fazer um programa que fisse alguns calculos para motor de relutância variavel, bem essa parte esta pronta agora eu desejo fazer uma função que salva os resultados obtidos. Para testar essa função eu fiz ela a par apenas para saber como ela funciona e como eu poderia insiri lá em meu codigo;

Resumindo eu gostaria de imprir algo assim : "Motor-de-relutância-variavel-15-maio-2015-12:21.txt"

#include <stdio.h>
#include <stdlib.h>
#include <time.h>     /*usa-se para pegar a data*/
#include <string.h>  /*usa-se para criar o nome do arquivo*/

int main(){

char frase[100],resultado_final[100];   /*O vetor frase é para testar escrevendo no meu arquivo, */

FILE *arq;

printf("\nInforme uma frase:\t");
        scanf("%[^\n]s",&resultado_final);

strcat(resultado_final,".txt");

arq = fopen(resultado_final, "w+"); /*eu optei por usar w+ pois, sempre irá gerar um novo arquivo e eu presiso que gere*/

// printf("Data :%s Hora:%s",__DATE__,__TIME__); exemplo de como imprir a data atual

printf("\n\nEscreva um frase:\t");
    scanf("%[^\n]s",&frase);

fprintf(arq,"\n A frase informada foi \"%s\".",frase);

fclose(arq);

    return (0);
}

Se eu remover a função strcat e em arq=fopen("nome-arquivo.txt","w+"); o problema de usar isso é que ele sempre apaga os logs anterior, então eu tenho duas saídas: na primeira eu faço que ele gere uma planilia e escreva nas linhas a seguir. O motivo disso é que eu presciso compara os resultados, que são o foco do programa.

 

Desde já grato

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara, não entendi nada do que você escreveu depois do código.

 

Bem o meu objetivo é fazer um programa que fisse alguns calculos para motor de relutância variavel, bem essa parte esta pronta agora eu desejo fazer uma função que salva os resultados obtidos. Para testar essa função eu fiz ela a par apenas para saber como ela funciona e como eu poderia insiri lá em meu codigo;

Resumindo eu gostaria de imprir algo assim : "Motor-de-relutância-variavel-15-maio-2015-12:21.txt"

Você quer imprimir o nome do arquivo, gerar o nome do arquivo ou escrever os resultados do cálculo no arquivo?

 

Leia a documentação das funções: http://en.cppreference.com/w/c/string/byte/strcat

 

 

The behavior is undefined if the destination array is not large enough for the contents of both str and dest and the terminating null character. The behavior is undefined if the strings overlap.

Eu recomendaria você utilizar a função snprintf.

 

 

http://en.cppreference.com/w/c/chrono/strftime

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

int main(void){
	setlocale(LC_TIME, "pt_BR.utf8"); // Caso você não coloque isto, é possível que os nomes dos meses venham em inglês.
	time_t data_atual = time(NULL);
	if (data_atual == -1) {
		printf("ERRO: Não foi possível obter a data.\n");
		return -1;
	}

	char data_extenso[30] = "";
	int function_status = strftime(data_extenso, sizeof(data_extenso) - sizeof(char), "%d-%B-%Y-%R", localtime(&data_atual));
	if (!function_status) {
		printf("ERRO: Não foi possível converter a data.\n");
		return -2;
	}

	char filename[255] = "";
	function_status = snprintf(filename, 253, "Motor-de-relutância-variavel-%s.txt", data_extenso);
	if (function_status < 0) {
		printf("ERRO: Não foi possível criar o nome do arquivo.\n");
		return -3;
	}

	printf("%s\n",filename);
	// Aqui você pode abrir o arquivo com o nome criado em filename.
    return (0);
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Perfeito!

 

Muito Obrigado Isis!

É possivel que sem a sua ajuda demoraria muito tempo, para resolver

 

E me desculpe, em meus proxmos post tentarei ser mais claro

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.