Programa em C não imprime caracteres gráficos.Como fazer?

Iniciado por edjin, 24 de Março de 2009, 20:38

tópico anterior - próximo tópico

edjin

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.


fpissarra

Citação de: edjin 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"); ...

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:

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...

edjin

Ainda hoje vou tentar com o wprintf,se der certo,já estou feliz.Abraços e valeu pela força.

edjin

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

Bocage

#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>)...

fpissarra

Citação de: edjin 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

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)...

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

edjin

Miuto obrigado fpissarra,aqui ficou ok.Abraços valeu. ;D