Jump to content

Erro que nao devia existir!!


Recommended Posts

Posted

Boas,

Estava a fazer um dos exercicios resolvidos do Linguagem C (sem olhar pra soluçao 😉). O problema pode ser encontrado na pagina 148.

Escreva um programa em C que escreva no ecrã, toda a tavela ASCII (0..255 chars) escrevendo em cada linha o codigo ASCII e o caracter correspondente.

EXEMPLO

...

65 -->A

66 -->B

67 -->C

...

A resoluçao dada pelo livro é a seginte:

#include <stdio.h>
main()
{
int i;
for (i=0;i<=255;i++)
printf("%3d --> %c\n",i, (char) i);
}

A resoluçao criada por mim é:

#include <stdio.h>
main()
{
int x;
char y;
for(x=0;x<=255;x++, y++)
printf("%d ---> %c\n",x,y);
}

O erro aqui é que nenhum dos dois programas me da a tabela de ASCII. Muitos numeros nao tem correspondente e, por exemlo, o caracter C esta no numero 140 quando deveria estar no numero 67. Isto acontece tambem com a resoluçao que estava no livro, dai eu estar tao intrigado. Estou a compilar isto com o GCC, e a usar o KATE como editor(nao sei se isto é relevante 😛 )

Desde ja agradecido pela ajuda

Posted

Falta sim. Mas agora é que a porca torce o rabo. Compilei isto em Windows e ja funciona ?. Mesmo sem inicializar a variavel y da-me o ASCII todo e nos numeros correctos. Ja o exemplo do Damas da erro a compilar.

PS: Tambem és de Braga 😉

EDIT: Deu erro a compilar porque eu me enganei ao escrever o codigo aqui no forum e depois fiz copy/paste para o IDE. No entanto o codigo compilado em Linux, tanto a minha resoluçao como a do Damas da aquele erro estupido

Posted

Ve o meu edit 😉. Escrevemos ao mesmo tempo

O erro que me da em linux é que o ASCII esta todo trocado. Exemplo: 140 --> C

Em Windows isto ja nao acontece, embora esteja a usar o mesmo codigo.

Fica bem

Posted

Ve o meu edit 😄 . Escrevemos ao mesmo tempo

O erro que me da em linux é que o ASCII esta todo trocado. Exemplo: 140 --> C

Em Windows isto ja nao acontece, embora esteja a usar o mesmo codigo.

Fica bem

eu já usei várias vezes um código semelhante em Linux e funcionava...

a única diferença é que eu normalmente não faço o casting para 'char' (no printf).

Posted

Curtia saber o que esta mal com isto lol. Se compilar este programa em linux da-me isto: http://img332.imageshack.us/img332/2746/snapshot93vu.png

Se compilar em windows da-me a tabela ASCII correcta. Não percebo isto...

Alguem me pode ajudar?

Desde ja agradecido

Posted

o typecasting que ali tens, não está ali a fazer nada, é desnecessário. exprimenta sem ele, talvez o erro esteja ai, se n tiver, n tou a ver...

Posted

Se em vez de int x; utilizares unsigned char x; acontece o mesmo? Vais ter é que mudar a condição do for para x<=254 senão nunca mais sais do ciclo... mas só para teste, experimenta!

Desaparecido.

Posted

É pouco eficiente, mas eu so soube isso depois... Ja tentei com apenas 1 variavel com casting e sem casting e as duas me dao este erro estupido. Em windows nao acontece isto

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.