Ir ao conteúdo

Posts recomendados

Postado

Boa tarde, pessoal. Estou com uma dúvida sobre impressão de texto na tela em negrito, e não achei material na internet.

No livro "C Completo e Total" do Herbert Schildt também não consegui informação a respeito.

 

Achei em um blog o seguinte código, mas não consegui entender a lógica que ele utilizou. Se alguém puder me ajudar, agradeço.

 

#include <stdio.h>

void bold(int status) {
 static const char *seq[] = {"\x1b[0m", "\x1b[1m"};
 printf("%s", seq[!!status]);
}

int main(void) {
 printf("one "); bold(1); printf("two "); bold(0); printf("three\n");
 return 0;
}

 

  • Curtir 1
Postado

Ele utilizou ANSI ESCAPE CODES. É uma maneira de dar cor/destaque/localizar texto no padrão ANSI.

Aqui uma lista de todos:

https://gist.github.com/fnky/458719343aabd01cfb17a3a4f7296797

você manda a sequencia "ESC[1m" no printf e então todo o texto impresso após será em negrito - na função é quando status = 1.

Para voltar ao normal, você manda imprimir a sequencia "ESC[0m" - na função, status = 0

Obs.: ESC = \x1b

 

#include <stdio.h>

void bold(int status) {
 static const char *seq[] = {"\x1b[0m", "\x1b[1m"};
 printf("%s", seq[!!status]);
}

void italic(int status) {
 static const char *seq[] = {"\x1b[0m", "\x1b[3m"};
 printf("%s", seq[!!status]);
}


int main(void) {
 printf("one "); bold(1); printf("two "); bold(0);italic(1); printf("three\n");
 bold(1);printf("four");
 return 0;
}

Uma função para adicionar itálico

  • Curtir 3
  • Obrigado 1
Postado
2 horas atrás, kampa896 disse:

Achei em um blog o seguinte código, mas não consegui entender a lógica que ele utilizou. Se alguém puder me ajudar

 

Você não disse o sistema que está usando, nem como pretende usar. Se pretende usar isso na console do Windows há duas maneiras. E a documentação está onde se poderia esperar... https://docs.microsoft.com/pt-br/windows/console/console-functions, em português, direto dos donos do campo, da bola e das camisas.

 

Esse código que postou não tem nenhuma "lógica". São apenas comandos dos anos 80 dos terminais da família do VT-100 da Digital, e que acabaram virando o padrão nas décadas seguintes. 

 

Direto da documentação: 
 

Citação

O comportamento das sequências a seguir baseia-se nas tecnologias de emulador de terminal VT100 e derivadas, mais especificamente no emulador de terminal xterm. Mais informações sobre as sequências de terminais podem ser encontradas em http://vt100.net e em http://invisible-island.net/xterm/ctlseqs/ctlseqs.html

 

Hoje há uma convergência entre Windows e Linux/Unix/MacOS nessa área, e no caso do Windows o recomendado é usar a "nova" console, o Terminal, que aceita os comandos do VT-100. No geral isso é muitoimage.png.e92d80808eb2b89a007cc131bbd9fff0.png chato e sugiro que evite a menos que seja bem pago ou tenha tempo pra gastar. Os novos recursos da console são isso, basicamente: Virtual Screen Terminal é o nome que a Microsoft arrumou. 

 

image.png.5994d7c104f6cf4f79e73db8c19e2bc9.png

(de https://docs.microsoft.com/pt-br/windows/console/console-virtual-terminal-sequences)

 

Essa convergência e interesse  vem da migração de tudo para a tal cloud, onde as máquinas voltaram aos '80 e muitas não tem interface gráfica. E aparece lugar para programas full-screen em modo texto, estilo curses/getopt daquela época.

 

Sugiro ver a documentação. Se usa Linux/MacOS veja man termios e man ioctl e vai encontrar a referência e as estruturas...

 

 

  • Curtir 2
  • Obrigado 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...