Como usar caracteres ASCII extendidos em C no Ubuntu ?

1. Como usar caracteres ASCII extendidos em C no Ubuntu ?

José Pessoa de Lima Neto
ubuntu_server

(usa Ubuntu)

Enviado em 12/07/2015 - 22:32h

Boa Noite Amigos, por favor quero saber como eu posso fazer o uso de todos os caracteres ASCII no Ubuntu 14.04.02 64 bits, pois só vai até o 126 se não me engano e a minha intenção é fazer retângulos, ou seja aqueles velhos menus com linhas retas em C, não com * ou outro caractere, pois tem uns caracteres que são próprios para isso.
Desde já Obrigado e DEUS Abençoe...


  


2. Re: Como usar caracteres ASCII extendidos em C no Ubuntu ?

Paulo
paulo1205

(usa Ubuntu)

Enviado em 13/07/2015 - 00:57h

Não existe uma entidade que possa ser chamada de “ASCII estendido” (o verbo estender, incluindo suas formas nominais, é com “s”; por outro lado, as formas não-verbais, como extensão, extenso e extensivo, são com “x” -- coisas da língua). ASCII é um conjunto de símbolos representado por números de sete bits, o que permite até 128 símbolos, contados de 0 a 127.

Existem vários conjuntos de caracteres diferentes, com 8, 16 e até 31 bits, que utilizam os códigos de 0 a 127 para os mesmos símbolos especificados pelo ASCII, mas podem ser incompatíveis entre si por causa de como usam as posições de 128 em diante. Não bastasse a multiplicidade de conjuntos de caracteres, pode haver também múltiplas formas de representar os mesmos caracteres do mesmo conjunto de caracteres (por exemplo: você pode representar os caracteres do Unicode usando UTF-8, UTF-16LE, UTF-16BE, UTF-32, GB18030, EUC etc.).

Não bastasse isso, ainda existe uma outra questão: o meio de exibição que você está usando é capaz de fazer o que você quer? Você está no console, usando a fonte default do BIOS? Ou está no ambiente gráfico? Se estiver no ambiente gráfico, está usando qual programa emulador de terminal? Que emulações ele suporta? A fonte de texto que você usa no terminal possui os símbolos necessários para desenhar molduras?

Dito tudo isso, dê uma olhada no seguinte artigo da Wikipedia: https://en.wikipedia.org/wiki/Box-drawing_character (particularmente as seções 1.1 e 1.3).


3. Re: Como usar caracteres ASCII extendidos em C no Ubuntu ?

José Pessoa de Lima Neto
ubuntu_server

(usa Ubuntu)

Enviado em 14/07/2015 - 01:19h

Olá Amigo paulo1205, Tudo Bem ?
Li algumas vezes e visitei o site indicado por você também, mas não consegui ainda entender bem. Você pode me explicar como e insiro os caracteres que eu quero no meu programa para ciar os menus que desejo por favor ?
Mais uma vez Obrigado e DEUS Abençoe...



4. Re: Como usar caracteres ASCII extendidos em C no Ubuntu ?

euteste da silva
foxbit3r

(usa Solaris)

Enviado em 14/07/2015 - 17:05h

Colega,
Se você quer inserir caracteres que não convencionais, você pode trabalhar com UTF-8 que permite a inclusão desses caracteres.

Para isso dê uma olhada no google sobre wchar.h e utf-8 que você vai achar bastante coisa.

https://linuxprograms.wordpress.com/2012/05/12/using-scanf-and-wchar_t-to-read-and-print-utf-8-strin...
https://bitismyth.wordpress.com/2011/03/17/utf-8-wchar_t-ou-outro-formato/
https://en.wikibooks.org/wiki/C_Programming/C_Reference/wchar.h
http://www.gnu.org/software/libc/manual/html_node/Extended-Char-Intro.html

Espero que te ajude.
Bom aprendizado.


5. Re: Como usar caracteres ASCII extendidos em C no Ubuntu ?

José Pessoa de Lima Neto
ubuntu_server

(usa Ubuntu)

Enviado em 15/07/2015 - 01:15h

Olá Amigo foxbit3r Obrigado mesmo pelas dicas mas ainda não consegui resolver o problema, achei um tópico no Stakoverflow que no Windows funcionou mas no Ubuntu no lugar do caractere aparece um ponto de interrogação ( ? ), o que será ?
Desde já Obrigado e DEUS Abençoe...


6. Re: Como usar caracteres ASCII extendidos em C no Ubuntu ?

Paulo
paulo1205

(usa Ubuntu)

Enviado em 15/07/2015 - 06:57h

Meu caro, não é a prática desta comunidade entregar código pronto, de bandeja. Você já recebeu várias dicas úteis, então poderia fazer algum esforço para andar por conta própria.

No artigo da Wikipedia que eu mencionei, o item 1.3, que utiliza caracteres especiais do terminal VT100 para desenhar caixas, contém um exemplo de código em Bash. Eu acho que você deve conseguir pelo menos portar para C aquele exemplo. Uma vez que o faça, fazer outras coisas deve ser igualmente fácil.

Eu chamo a atenção para a solução com VT100 porque acredito que ela é a que tem mais chances de funcionar tanto nos emuladores de terminal do X11 quanto no console de texto, independentemente de outros fatores do ambiente (como o tipo de fonte de texto que você utilize, ou se utiliza um conjunto de caracteres de oito bits × Unicode com UTF-8).

Como você mencionou explicitamente o Ubuntu, é bem provável que o ambiente gráfico utilize Unicode como conjunto de caracteres padrão (conjuntos de caracteres de oito bits, como o ISO-8859-1, não são mais tão comuns hoje como já foram no passado, embora eu não duvide haver quem ainda os prefira -- aliás, justamente este fórum do VoL parece ser um dos lugares onde não se usa Unicode, ou pelo menos há um limite nos caracteres permitidos). É bem possível que você consiga gerar os caracteres de desenho de caixas simplesmente colocando-os no meio do código do programa em C, como parte da string passada a uma função como printf().

Se a sua dúvida é tão somente como os obter, uma forma é usar um programa de mapa de caracteres, como os fornecidos pelo KDE ou pelo Gnome, selecionar ou localizar o bloco correspondente (no KCharSelect, do KDE, eles estão na categoria “Mathematical Symbols”, subcategoria “Box Drawing”), e então fazer copy-and-paste dos caracteres selecionados do programa seletor para o editor de textos.

Em aplicativos do Gnome, um jeito de produzir qualquer caráter do Unicode é segurar as teclas Control e Shift, e então digitar “u” seguido do código hexadecimal do símbolo Unicode que você quiser embutir no texto (uma pena que não haja coisa parecida no KDE/Qt :(). No Vim, você pode conseguir efeito parecido com a sequência Control+V, “u” e o código hexadecimal.

Outro jeito de fazer, assumindo Unicode, é você colocar sequências de escape nas strings em C (mas você precisa compilar usando o padrão do C de 2011, pois versões anteriores não suportam escape de Unicode).

printf("Canto superior esquerdo simples: \u250c\n")


Contudo, eu acho que a solução de usar as sequências de escape do VT100 tem mais chances de funcionar universalmente (no mundo Unix, com ou sem Unicode, mas não no Windows) do que a solução de embutir Unicode no código fonte.


7. Re: Como usar caracteres ASCII extendidos em C no Ubuntu ?

José Pessoa de Lima Neto
ubuntu_server

(usa Ubuntu)

Enviado em 16/07/2015 - 00:26h

Amigo paulo1205, mais uma vez Obrigado pela Atenção mas não consegui. Pesquisei sobre VT100 mas não é o que eu pensava, no caso uma janela de terminal, tentei no Vim mas não funcionou, no XTerm e UXTerm também, mas nada.
Não preciso que disponibilize o código feito, mas nas formas que me passou não deu certo.
Onde você falou "" No artigo da Wikipedia que eu mencionei, o item 1.3, que utiliza caracteres especiais do terminal VT100 para desenhar caixas, contém um exemplo de código em Bash. Eu acho que você deve conseguir pelo menos portar para C aquele exemplo. Uma vez que o faça, fazer outras coisas deve ser igualmente fácil. "" não consegui entender.
Mas em fim Obrigado pela Atenção e DEUS Abençoe...


8. Re: Como usar caracteres ASCII extendidos em C no Ubuntu ?

Paulo
paulo1205

(usa Ubuntu)

Enviado em 16/07/2015 - 12:03h

ubuntu_server escreveu:

Amigo paulo1205, mais uma vez Obrigado pela Atenção mas não consegui. Pesquisei sobre VT100 mas não é o que eu pensava, no caso uma janela de terminal, tentei no Vim mas não funcionou, no XTerm e UXTerm também, mas nada.


O console do Linux e todos os programas emuladores de terminal que eu conheço (xterm, rxvt, Gnome-Terminal, Konsole, eterm, screen, terminator etc.) são compatíveis com o terminal VT100. Isso implica que todos eles aceitam exibir caracteres alternativos quando você envia certos caracteres de controle.

Não preciso que disponibilize o código feito, mas nas formas que me passou não deu certo.


Deixe-me dar uma dica. Se você quiser receber ajuda efetiva num fórum de discussão público, não pode ser tão vago como vem sendo. Você deve dizer o que tentou fazer, como tentou fazê-lo, quais a características do ambiente durante os testes (por exemplo: usou o terminal do Gnome, o console de texto, um terminal serial, uma conexão por SSH a partir do Windows?). De preferência, deve mostrar o código que você usou e acredita que não funcionou. E deve ser preciso ao dizer por quê não funcionou (por exemplo: se não saiu nada ou, se saiu alguma coisa inesperada, exatamente que coisa inesperada, podendo até mesmo copiar os caracteres que supostamente são “lixo”).

Onde você falou "" No artigo da Wikipedia que eu mencionei, o item 1.3, que utiliza caracteres especiais do terminal VT100 para desenhar caixas, contém um exemplo de código em Bash. Eu acho que você deve conseguir pelo menos portar para C aquele exemplo. Uma vez que o faça, fazer outras coisas deve ser igualmente fácil. "" não consegui entender.


1) O item 1.3 mostra um exemplo do que você quer fazer

2) Esse exemplo usa códigos do VT100 (não depende de Unicode).

3) Esse exemplo está em shell, não em C.

4) Eu acredito que você seja capaz de reescrever, sozinho, o exemplo dado, mas em C.

5) Se entender o exemplo reescrito em C por você mesmo, vai saber produzir os caracteres em qualquer outra situação.


9. Re: Como usar caracteres ASCII extendidos em C no Ubuntu ?

José Pessoa de Lima Neto
ubuntu_server

(usa Ubuntu)

Enviado em 16/07/2015 - 22:27h

Caro paulo1205, por favor se o arquivo da wiki 1.3 é script shell eu não estou conseguindo executar pois estou usando essa sintaxe:

Uso o terminal padrão do Ubuntu, ambiente 14.04 64 bits.
#!/bin/bash
wchar_t *wcscat(wchar_t *s1, const wchar_t *s2);

Desculpa mesmo se não consegui retornar os resultados esperados segundo sua ajuda mas é que sou totalmente iniciante em Linux e a pratica da linguagem C no Windows é diferente em alguns pontos em relação ao Linux...


10. Re: Como usar caracteres ASCII extendidos em C no Ubuntu ?

Paulo
paulo1205

(usa Ubuntu)

Enviado em 17/07/2015 - 10:00h

Meu caro, quando você fez a pergunta, eu sabia quase tanto sobre o assunto perguntado quanto você.

Desde então, com uma meia dúzia de buscas no Google, eu aprendi um monte de coisas que não sabia, e repassei a você todas as informações. Só não mostrei como fazer diretamente, por três motivos:

1) Há mais de uma maneira de fazer.

2) A escolha da maneira da maneira correta depende do ambiente em que o programa será executado, e isso só você conhece.

3) Você deve aprender a fazer por conta própria. Eu já lhe dei insumos suficientes (quase todos aprendidos DEPOIS da SUA pergunta!) para você caminhar sozinho.

O que eu posso fazer por você neste momento é lhe passar mais duas referências que vi ontem e hoje, para que você leia mais sobre os caracteres estendidos do VT100: http://www.in-ulm.de/~mascheck/various/alternate_charset/ e http://vt100.net/.


11. Re: Como usar caracteres ASCII extendidos em C no Ubuntu ?

José Pessoa de Lima Neto
ubuntu_server

(usa Ubuntu)

Enviado em 17/07/2015 - 21:44h

Boa Noite paulo1205 , você já vem me dando umas dicas há alguns dias e ainda não consegui, baseado no que você me passou li e li mas não consegui pois não sei a sintaxe de muitos dos comandos que você me passou a dica.
Você conseguiu achar e aprender muitas coisas do que eu estou procurando devido ao seu convívio no Linux coisa que eu não tenho, então você sabe como e por onde começar a procurar,
e eu mau sei o básico AINDA.
No meu caso, creio que o mais ideal seria uma. direção com começo, meio e fim pois o que você me passou é útil mas para quem já tem uma vivência no S.O em questão, que sabe o que cada comando daqueles quer dizer, assim fica fácil de saber o que quer dizer.
Contudo Obrigado por toda ajuda que vem me dado e DEUS Abençoe...


12. Re: Como usar caracteres ASCII extendidos em C no Ubuntu ?

Paulo
paulo1205

(usa Ubuntu)

Enviado em 17/07/2015 - 21:51h

Olha, então esqueça os caracteres do VT100.

Lá atrás eu falei para você copiar e colar os caracteres desejados diretamente no seu código. Isso pode funcionar no ambiente gráfico, pois o default do Ubuntu é usar Unicode. Você só tem, literalmente, de selecionar o caráter desejado no seletor de caracteres do KDE ou Gnome e colá-lo diretamente no texto do seu programa.

Acho que não dá para ser mais simples do que isso.



01 02



Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts