Autor Tópico: Programa em C não imprime caracteres gráficos.Como fazer?  (Lida 6759 vezes)

Offline edjin

  • Usuário Ubuntu
  • *
  • Mensagens: 67
    • Ver perfil
Programa em C não imprime caracteres gráficos.Como fazer?
« Online: 24 de MAR?O de 2009, 20:38 »
Estou me aventurando em programação em C,e tenho alguns exercícios que imprimem caracteres gráficos na tela como o exemplo => printf("xDC,xDC,xDC,xDB");Mas quando executo o programinha,no lugar que deveria aparecer os caracteres só aparece pontos de interrogação.Como resolver esse probleminha de iniciante????.


Estou com ubuntu 8.10 intrepid e uso gcc de sua versão.


Offline fpissarra

  • Usuário Ubuntu
  • *
  • Mensagens: 246
    • Ver perfil
    • Lost in the e-Jungle
Re: Programa em C não imprime caracteres gráficos.Como fazer?
« Resposta #1 Online: 26 de MAR?O de 2009, 15:59 »
Estou me aventurando em programação em C,e tenho alguns exercícios que imprimem caracteres gráficos na tela como o exemplo => printf("xDC,xDC,xDC,xDB"); ...

Hummmm... Sua chamada ao printf() não seria com uma string contendo sequências de escape? ("\xDC.\xDC.\xDC.\xDB")?

Ok, mesmo que seja... se não me engano, por default, o UBUNTU usa o charset UTF-8. Assim, essas sequências, acredito, não teriam o mesmo sentido em relação ao charset ISO-8859-1 (Latin-1)... Dê uma olhada em http://www.unicode.org/ e no Wikipedia (http://en.wikipedia.org/wiki/UTF-8) para maiores informações.

Em C e C++ você sempre pode usar UNICODE colocando o prefico L antes da string:

Código: [Selecionar]
wprintf(L"\xDC.\xDC.\xDC.\xDB");
Note o wprintf() ao invés do printf(). As funções das bibliotecas "normais" estão prototipadas em wchar.h.

Espero ter ajudado...

Offline edjin

  • Usuário Ubuntu
  • *
  • Mensagens: 67
    • Ver perfil
Re: Programa em C não imprime caracteres gráficos.Como fazer?
« Resposta #2 Online: 27 de MAR?O de 2009, 16:08 »
Ainda hoje vou tentar com o wprintf,se der certo,já estou feliz.Abraços e valeu pela força.

Offline edjin

  • Usuário Ubuntu
  • *
  • Mensagens: 67
    • Ver perfil
Re: Programa em C não imprime caracteres gráficos.Como fazer?
« Resposta #3 Online: 01 de Abril de 2009, 17:43 »
Bom,dia.De fato não estou estudando por esse detalhe,e me desculpe, na pergunta principal me esqueci de colocar a barra antes da descrição dos caracteres,em casa tentei o wprintf mas mesmo assim retornou o mesmo erro,,,,,,,posso estar faltando alguma biblioteca de cabeçalho??????   O que vc me diz.Abraços

Offline Bocage

  • Usuário Ubuntu
  • *
  • Mensagens: 54
    • Ver perfil
Re: Programa em C não imprime caracteres gráficos.Como fazer?
« Resposta #4 Online: 02 de Abril de 2009, 03:19 »
#include<stdio.h>
main()
{
   printf("Hello world...\n");
}

Este é o primeiro programa que se aprende um C, não sei se é esse o problema mas para todo o pipo de funções input output tens de meter a biblioteca (#include<stdio.h>)...

Offline fpissarra

  • Usuário Ubuntu
  • *
  • Mensagens: 246
    • Ver perfil
    • Lost in the e-Jungle
Re: Programa em C não imprime caracteres gráficos.Como fazer?
« Resposta #5 Online: 02 de Abril de 2009, 15:14 »
Bom,dia.De fato não estou estudando por esse detalhe,e me desculpe, na pergunta principal me esqueci de colocar a barra antes da descrição dos caracteres,em casa tentei o wprintf mas mesmo assim retornou o mesmo erro,,,,,,,posso estar faltando alguma biblioteca de cabeçalho??????   O que vc me diz.Abraços

Em sua mensagem original você não descreve nenhum erro, necessariamente. Aparecer o caracter ? dentro de um losango indica que o caracter no charset ou que não está implementada no sistema operacional (dependendo de configuração). Dê uma olhada no site http://www.utf8-chartable.de/unicode-utf8-table.pl e você terá uma idéia do conjunto de caracteres disponíveis...

Também tive problemas para mostrar caracteres em UTF-8 no console... A maneira que consegui foi usando o printf() ao invés do wprintf(). Dê uma olhada na tabela do link acima e você verá a faixa de chars começando em U+2500 que são usados para criar caixas (boxes)...

Código: [Selecionar]
printf("\xe2\x94\x8c\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x90\n");
printf("\xe2\x94\x82...\xe2\x94\x82\n");
printf("\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x98\n");

Esse fragmento de código deve mostrar um quadrado com três pontos no meio... Note que os caracteres são codificados com UTF-8 (\xe2\x94\x80, por exemplo, é o traço horizontal).

[]s
Fred

Offline edjin

  • Usuário Ubuntu
  • *
  • Mensagens: 67
    • Ver perfil
Re: Programa em C não imprime caracteres gráficos.Como fazer?
« Resposta #6 Online: 28 de Abril de 2009, 11:03 »
Miuto obrigado fpissarra,aqui ficou ok.Abraços valeu. ;D