Ir ao conteúdo

Posts recomendados

Postado

Olá pessoal. Estou montando uma ferramenta simples em C para me ajudar a gerar uma mensagem com todos cálculos feitos pra por nas respostas de orçamento no mercado livre. Porém na hora de copiar a mensagem estou tendo problemas, já que o programa roda no prompt do dev C++. Queria saber se tem algum comando em C para copiar o printff com a mensagem automaticamente para o CRTL C. Não sou programador, apenas aprendi o básico no curso de engenharia e estou estudando mais agora, mas não achei nada relacionado a isso em outro lugar. Agradeço desde já!  

#include <stdio.h>
#include <conio.h>
#include <locale.h>
#include <math.h>


void main()
{
	setlocale(LC_ALL, "Portuguese");
	float precot, total, precop;
	int quant, quanp, frete, op, produto, x;
	char cliente[500], msg[700];
	x == 1;
	
	while(x==1)
	{

	printf("Produto (TELHAS = 1)(CHAPA = 2): ");
	scanf("%i", &op);
	
	printf("Nome do cliente:  ");
	scanf("%s", &cliente);
	
	printf("Quantidade telha/chapa: ");
	scanf("%i", &quant);
	
	printf("Preco telha/chapa: ");
	scanf("%f", &precot);
	
	printf("Preco parafuso: ");
	scanf("%f", &precop);
	
	printf("Preco frete: ");
	scanf("%i", &frete);
	
	if(op==1)
	{
		
		if(quant>=15)
		{
			quanp = quant*4;
			while(quanp%10 !=0)
			{
				quanp++;
			}
			precot = quant*precot;
			precop = quanp*precop;
			precot = floor(precot);
			precop = floor(precop);
		
			total = precop + precot + frete;
			total = floor(total);
		
			printf("\n\nOlá %s. %i telhas R$ %.f,00 + %i parafusos R$ %.f,00 + Frete R$ %i,00 TOTAL R$ %.f,00 via mercado livre. Entrega em área urbana. Caso for comprar preciso que me avise antecipadamente para eu criar um anuncio personalizado com o valor total da sua compra, pois o mercado livre mudou a plataforma e o cliente não consegue mais inserir o frete. Caso comprar direto e não avisar sobre a compra, o frete será recalculado pois terá taxa do mercado livre sobre o frete. Ecopreserve agradece pelo contato e aguarda sua compra. \n\n", cliente, quant, precot, quanp, precop, frete, total);
		}
		else
		{
		
			precot = quant*precot;
			total = precot + frete;
			
			printf("\n\nOlá %s. %i telhas R$ %.f,00 + Frete R$ %i,00 TOTAL R$ %.f,00 via mercado livre. Entrega em área urbana. Caso for comprar preciso que me avise antecipadamente para eu criar um anuncio personalizado com o valor total da sua compra, pois o mercado livre mudou a plataforma e o cliente não consegue mais inserir o frete. Caso comprar direto e não avisar sobre a compra, o frete será recalculado pois terá taxa do mercado livre sobre o frete. Ecopreserve agradece pelo contato e aguarda sua compra.\n\n", cliente, quant, precot, frete, total);
		}
	}
	if(op == 2)
	{
			
		precot = quant*precot;
		precot = floor(precot);
		
		total = precop + precot + frete;
		total = floor(total);
		
		printf("\n\nOlá %s. %i chapas R$ %.f,00 + Frete R$ %i,00 TOTAL R$ %.f,00 via mercado livre. Entrega em área urbana. Caso for comprar preciso que me avise antecipadamente para eu criar um anuncio personalizado com o valor total da sua compra, pois o mercado livre mudou a plataforma e o cliente não consegue mais inserir o frete. Caso comprar direto e não avisar sobre a compra, o frete será recalculado pois terá taxa do mercado livre sobre o frete. Ecopreserve agradece pelo contato e aguarda sua compra.\n\n", cliente, quant, precot, frete, total);
		
	}
	
}
}

 

Postado
  Em 17/02/2020 às 14:43, Gabrielvess disse:

se tem algum comando em C para copiar o printff com a mensagem automaticamente para o CRTL C

Expandir  

 

Não consegui entender :(

 

printf() é uma função,o resultado vai para a saída padrão.

control C é uma combinação de teclas, e dependendo da configuração e do sistema pode gerar uma interrupção, um sinal no Linux que você pode interceptar e associar a uma função em seu programa. No Windows não funciona assim.

 

Estaria usando Windows e quer copiar um texto para a área de transferência? Se for esse o caso a documentação está toda aqui em https://docs.microsoft.com/en-us/windows/win32/dataxchg/about-the-clipboard 

 

 

Postado

@arfneto Eu queria apenas saber uma forma de copiar o texto que sai de alguns dos printf, pois naquela interface do prompt não consigo copiar apenas a mensagem, quando eu copio vem tudo o que digitei. Quando eu gero a mensagem quero copiar somente essa parte: 


"Olá TESTE. 15 telhas R$ 573,00 + 60 parafusos R$ 37,00 + Frete R$ 100,00 TOTAL R$ 710,00 via mercado livre. Entrega em área urbana. Caso for comprar preciso que me avise antecipadamente para eu criar um anuncio personalizado com o valor total da sua compra, pois o mercado livre mudou a plataforma e o cliente não consegue mais inserir o frete. Caso comprar direto e não avisar sobre a compra, o frete será recalculado pois terá taxa do mercado livre sobre o frete. Ecopreserve agradece pelo contato e aguarda sua compra."

 

E não tudo que, que no caso seria isso:

 

"Produto (TELHAS = 1)(CHAPA = 2): 1
Nome do cliente:  TESTE
Quantidade telha/chapa: 15
Preco telha/chapa: 38,2
Preco parafuso: 0,62
Preco frete: 100


Olá TESTE. 15 telhas R$ 573,00 + 60 parafusos R$ 37,00 + Frete R$ 100,00 TOTAL R$ 710,00 via mercado livre. Entrega em área urbana. Caso for comprar preciso que me avise antecipadamente para eu criar um anuncio personalizado com o valor total da sua compra, pois o mercado livre mudou a plataforma e o cliente não consegue mais inserir o frete. Caso comprar direto e não avisar sobre a compra, o frete será recalculado pois terá taxa do mercado livre sobre o frete. Ecopreserve agradece pelo contato e aguarda sua compra.

Produto (TELHAS = 1)(CHAPA = 2):"

 

O segundo jeito, que é o que está funcionado pra mim é bom. Porém faço muitos orçamentos por dia, e ficar editando toda vez no bloco de nota faz eu perder um pouco de tempo. Queria otimizar isso. 

Postado
  Em 17/02/2020 às 17:06, Gabrielvess disse:

@arfneto Eu queria apenas saber uma forma de copiar o texto que sai de alguns dos printf, pois naquela interface do prompt não consigo copiar apenas a mensagem, quando eu copio vem tudo o que digitei. Quando eu gero a mensagem quero copiar somente essa parte: 


"Olá TESTE. 15 telhas R$ 573,00 + 60 parafusos R$ 37,00 + Frete R$ 100,00 TOTAL R$ 710,00 via mercado livre. Entrega em área urbana. Caso for comprar preciso que me avise antecipadamente para eu criar um anuncio personalizado com o valor total da sua compra, pois o mercado livre mudou a plataforma e o cliente não consegue mais inserir o frete. Caso comprar direto e não avisar sobre a compra, o frete será recalculado pois terá taxa do mercado livre sobre o frete. Ecopreserve agradece pelo contato e aguarda sua compra."

 

E não tudo que, que no caso seria isso:

 

"Produto (TELHAS = 1)(CHAPA = 2): 1
Nome do cliente:  TESTE
Quantidade telha/chapa: 15
Preco telha/chapa: 38,2
Preco parafuso: 0,62
Preco frete: 100


Olá TESTE. 15 telhas R$ 573,00 + 60 parafusos R$ 37,00 + Frete R$ 100,00 TOTAL R$ 710,00 via mercado livre. Entrega em área urbana. Caso for comprar preciso que me avise antecipadamente para eu criar um anuncio personalizado com o valor total da sua compra, pois o mercado livre mudou a plataforma e o cliente não consegue mais inserir o frete. Caso comprar direto e não avisar sobre a compra, o frete será recalculado pois terá taxa do mercado livre sobre o frete. Ecopreserve agradece pelo contato e aguarda sua compra.

Produto (TELHAS = 1)(CHAPA = 2):"

 

O segundo jeito, que é o que está funcionado pra mim é bom. Porém faço muitos orçamentos por dia, e ficar editando toda vez no bloco de nota faz eu perder um pouco de tempo. Queria otimizar isso. 

Expandir  

Seu programa já está funcionando e você só quer dar CNTRL+C no output no fim do programa né?

Só que ao dar CNTRL+C você copia o output e mais algumas coisas do windows certo?

 

Primeiro me diga seu compilador.

Postado
  Em 17/02/2020 às 17:06, Gabrielvess disse:

O segundo jeito, que é o que está funcionado pra mim é bom. Porém faço muitos orçamentos por dia, e ficar editando toda vez no bloco de nota faz eu perder um pouco de tempo. Queria otimizar isso

Expandir  

 

Entendo.

A documentação diz que esses mecanismos de acesso à área de transferência são reservados para projetos do tipo desktop e não para programas de console, mas acho que ao menos em C++ deve ser possível replicar o funcionamento.  Testei algumas das funções e parece que todas funcionam no ambiente da console. Mas é um processo complicado para de fato criar um teste completo. Se eu tiver tempo de criar um programa eu posto aqui.

 

Em essência o problema é que a área de transferência é uma área global de transferência, e pode conter um número enorme de coisas diferentes, algumas até criadas pelo usuário. E pode ter apenas um "dono" por vez na hora de gravar. E tem que alocar um recurso global e pode conter por exemplo um texto, ou uma foto, ou uma lista de arquivos, como quando você arrasta um ícone de um programa para a janela do compilador e ele abre o arquivo --- não sei se o compilador que usa faz isso., mas acho que entendeu o exemplo: drag & drop se chama.

 

Programas de console vivem em um ambiente mais ou menos separado no Windows, e fica difícil e muitas vezes impossível usar coisas dos projetos desktop. Em C# você tem uma classe clipboard que tem essas funções facinho. Em C++ usando aplicações de console precisaria testar mais com a documentação que te passei antes. Para desktop seria tranquilo.

 

De todo modo, para o seu problema talvez não precise passar por isso. Sugiro

  • não rodar programas do prompt do compilador. Não faz sentido. Arrume seu programa e gere um executável. Não há razão para compilar e gerar o mesmo código toda vez que faz um orçamento.
  • Mude seu programa para gerar, além da saída na tela que já te atende, uma saída em um arquivo de texto, via fprintf() que é igualzinho ao printf(). E nesse arquivo gere exatamente no formato que quer importar pro mercado livre.
  • Gere um atalho para rodar o seu programa e um atalho para abrir por exemplo o Bloco de Notas com o seu texto.
  • Clica no atalho de seu programa e gera o orçamento
  • Clica no atalho do notepad e abre o novo arquivo gerado
  • No bloco de notas, control A seleciona o texto todo, Control C copia. E vai tudo certo já que foi você que escreveu o programa
  • No mercado livre, control V copia o orçamento
  • E a vida segue

Um exemplo mais integrado:

 

Claro, não use telas maximizadas no Windows. São muito pouco produtivas e não vai conseguir fazer o que estou explicando. E quando são produtivas o próprio programa terá um atalho para isso. Meu compilador usa Alt-Shift-Enter, o Windows em geral usa F11, como o navegador Edge, o navegador Chrome...

 

Na tela do prompt de comando: para rodar o programa de novo para um próximo orçamento basta usar a seta para cima --- veja na imagem abaixo

 

No notepad control-O abre um novo arquivo, mas pode só fechar o programa e abrir com o atalho que ele abre na mesma posição na janela... E no fundo nem precisa do atalho porque pode abrir o bloco de notas com o arquivo gerado pelo programa usando o próprio prompt de comando

Se você tiver um programa de orçamento C chamado ch-testec.c vai gerar um executável ch-testec.exe. Se seu programa exigir um argumento com o nome do arquivo de teste pode abrir o orçamento direto no NotePad assim por exemplo

ch-testec arquivo.txt && notepad arquivo.txt

O efeito do "&&" é chamar o comando seguinte --- notepad arquivo.txt --- se o comando anterior --- ch-testec arquivo.txt --- retornou ok. Ou seja, o seu programa retornou 0 em main(). E aí o orçamento gerado já abre no bloco de notas...

Se for importante você pode até usar um arquivo .BAT e ir numerando os orçamentos, como arquivo1.txt, arquivo2.txt ... de modo a não perder nenhum se for importante.

Aberto no bloco de notas você usa Control-A, Control-C e vai no mercado livre com alt-TAB se já está com o site aberto, e já cola o orçamento com control-C claro

 

Veja uma tela assim, depois de rodar o programa:

 

1648886407_CapturadeTela(58).thumb.png.3cf795de31cdee9be17e5d64d2eb2191.png

 

E um protótipo do programa

#define _CRT_SECURE_NO_WARNINGS
#include "stdio.h"
#include "stdlib.h"

int main(int argc, char** argv)
{
	if (argc < 2)
	{
		fprintf(stderr,
			"\nCancelando: Faltou o nome do arquivo de saida\n\n");
		return -1;
	}

	FILE* saida = fopen(argv[1], "w");
	if (saida == NULL)
	{
		fprintf(stderr,
			"Nao conseguiu abrir [%s]\n",
			argv[1]
		);
		return -1;
	}
	fprintf(stderr, "Criado [%s]\n", argv[1]);
	fprintf(saida, "gerado pelo programa\n");
	for (int i = 1; i <= 10; i += 1)
		fprintf(saida, "Orcamento linha %02d\n", i);
	fclose(saida);
};	// main()

E para rodar o programa de novo basta voltar no prompt e usar a seta para cima...

 

Acha que serve?

 

 

 

 

 

Postado

@caiobcc Isso mesmo, eu uso dev c++. Ele gera um executável no prompt de comando. Tentei criar outros projetos com interface mas me pareceu complicado por ele. 

adicionado 45 minutos depois

@arfneto Entendi, obrigado pela ajuda.

Eu tentei fazer o programa abrir um bloco de notas tudo certinho, até ai funcionou. Mas na hora de colocar o fprintf no bloco, ele não ia para o bloco. As vezes posso ter montado a estrutura errado, mas pelo que eu entendi as funções que pesquisei apenas pega os dados que eu digitei após o fprintf e não a estrutura montada com as variáveis. 

Postado
  Em 18/02/2020 às 12:59, Gabrielvess disse:

Eu tentei fazer o programa abrir um bloco de notas tudo certinho, até ai funcionou. Mas na hora de colocar o fprintf no bloco, ele não ia para o bloco. As vezes posso ter montado a estrutura errado, mas pelo que eu entendi as funções que pesquisei apenas pega os dados que eu digitei após o fprintf e não a estrutura montada com as variáveis

Expandir  

 

Viu o exemplo que te mostrei? É só isso. Você põe seu código no programa que eu mostrei, no lugar daquele for que imprime as linhas de teste. E seu programa gera o arquivo com o nome que voce quiser e o notepad abre em seguida o arquivo novo...

ch-testec arquivo.txt && notepad arquivo.txt

Assim. Viu a imagem da tela?

Postado
  Em 18/02/2020 às 15:49, Gabrielvess disse:

ão consigo executar o programa pelo Dev C++, teria que fazer algo a mais? Eu já tenho o executável gerado pelo devc++

Expandir  

 

Dev C++ é um ambiente de desenvolvimento. Ele usa um compilador externo, tipo gcc ou mingw ou algo assim. Eu não uso esse ambiente.

 

Mas o fato é que ele acaba gerando um executável, um arquivo que deve ter o mesmo nome que seu programa em c. pgm.c gera pgm.exe por exemplo.

 

Esse pgm.exe você pode levar para qualquer computador e rodar. Só digitando o nome. Afinal é para isso que a gente um programa: para rodar em outras máquinas.

 

Dev C++ já cumpriu seu papel quando seu programa ficou pronto.

 

Você pode rodar o programa direto no executar do Windows, e no seu caso serviria até. Mas em geral você abre uma janela de comando, rodando Windows+R e CMD e ENTER. Isso porque a janela de execução de seu programa fecha ao final do programa e isso pode deixar o usuário inseguro. Um outro caminho, mais comprido, aperta iniciar e escreve "prompt de comando" claro que não precisa escrever tudo. Já vai apareer na tela:

coisa.png.0160954b3269a113d4bd54274934bfe1.png

 

Na janela que vai abrir, a tal  "Prompt de comando" você digita o nome do seu programa. O nome completo.

 

É essa sua dúvida? Viu a janela que eu postei com a imagem do terminal rodando isso?

 

Postado
  Em 18/02/2020 às 16:37, Gabrielvess disse:

@arfneto Não consegui ainda, eu uso windows 7 no momento. Estaria interferindo em algo isso?

Expandir  

Não. Windows 10 é mais esperto apenas. Algo que não é estranho já que Windows 7 foi lançado em 2009
Talvez pudesse explicar o que não está conseguindo. Seu IDE vai usar o compilador externo para gerar um arquivo executável. Só isso. Ele fez isso? Achou o executavel?

Achou onde abrir a janela do prompt de comando?

Viu a imagem que te mostrei com as 3 janelas abertas?

Postado
  Em 18/02/2020 às 17:00, arfneto disse:

Não. Windows 10 é mais esperto apenas. Algo que não é estranho já que Windows 7 foi lançado em 2009
Talvez pudesse explicar o que não está conseguindo. Seu IDE vai usar o compilador externo para gerar um arquivo executável. Só isso. Ele fez isso? Achou o executavel?

Achou onde abrir a janela do prompt de comando?

Viu a imagem que te mostrei com as 3 janelas abertas?

Expandir  

Agora consegui! O programa está rodando certinho, só editei o código para abrir em html para facilitar um pouco. Obrigado pela ajuda!!!

  • Obrigado 1
Postado
  Em 18/02/2020 às 18:21, Gabrielvess disse:

Agora consegui! O programa está rodando certinho, só editei o código para abrir em html para facilitar um pouco

Expandir  

 

Não sei se entendi, mas você pode gerar o código em HTML no arquivo de saída do seu programa em C e assim não ter que mexer em nada para colar do outro lado, se é disso que precisa

  • Curtir 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

Mostrar 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

Mostrar mais  
×
×
  • Criar novo...