Jump to content
rjfs

converter int para char

Recommended Posts

xtrm0

O que te foi dito antes está mal.

O que o prefixo char faria, seria inserir um valor 0 ou seja '/0' nessa posição, que é entendido como o final de uma string c.

O que terias de fazer, caso quisesses transformar um nº em int, seria usares o itoa ou o sstream. Ou, caso tivesses a certeza que o numero fosse menor ou igual a nove, usar:

int k=0;
char palavra[50];
palavra[0]=k+'0';

Cumprimentos,

Xtrm0


<Signature goes here>

Share this post


Link to post
Share on other sites
Knitter

Não consigo assim. Faço printf("%c",palavra[0]); e não aparece nada na consola...

Não aparece nada porque se executaste o código exactamente como indicado estás a tentar imprimir o carácter com o código zero, e esse é um carácter especial, sem representação gráfica, que é usado para terminar a uma String.

O que te foi dito antes está mal.

Está exactamente como pedido. Foi pedido para colocar a variável k, que é um int, na primeira posição de um vector de char, mas não foi pedido para converter o valor inteiro para a sua representação gráfica.

Share this post


Link to post
Share on other sites
rjfs

O que te foi dito antes está mal.

O que o prefixo char faria, seria inserir um valor 0 ou seja '/0' nessa posição, que é entendido como o final de uma string c.

O que terias de fazer, caso quisesses transformar um nº em int, seria usares o itoa ou o sstream. Ou, caso tivesses a certeza que o numero fosse menor ou igual a nove, usar:

int k=0;
char palavra[50];
palavra[0]=k+'0';

Cumprimentos,

Xtrm0

Existe alguma função standard para nºs maiores que 9?

Share this post


Link to post
Share on other sites
xtrm0

Ok,mas cometeste um erro comum, esqueceste de usar uma biblioteca:

#include <sensocomum>

using namespace std;

ele queria colocar k em e[0], ke significa que e[0] deveria guardar k, e nao o seu valor.

Cumprimentos,

xtrm0


<Signature goes here>

Share this post


Link to post
Share on other sites
Localhost
O que o prefixo char faria, seria inserir um valor 0 ou seja '/0' nessa posição, que é entendido como o final de uma string c.

\0;)

Quanto ao problema inicial, usar a função sprintf é o melhor modo de resolver isto.


here since 2009

Share this post


Link to post
Share on other sites
xtrm0

Sim, o itoa:

/* itoa example */
#include <stdio.h>
#include <stdlib.h>

int main ()
{
  int k=0;
  char e[33];
  itoa (i,e,10);
  printf ("decimal: %s\n",e);
}


<Signature goes here>

Share this post


Link to post
Share on other sites
Localhost

Sim, o itoa:

/* itoa example */
#include <stdio.h>
#include <stdlib.h>

int main ()
{
  int k=0;
  char e[33];
  itoa (i,e,10);
  printf ("decimal: %s\n",e);
}

@xtrm0: a função itoa não é padrão e por isso não deve ser utilizada. Como já disse no meu post anterior, o problema deve ser resolvido com a função sprintf.

By the way, isto é a secção de C e não de C++, por isso tenta usar as tags code com C.


here since 2009

Share this post


Link to post
Share on other sites
xtrm0

Então std significa o quê? ;)

Eu sei, que nao é ANSI-C/C++, mas os gcc e o g++ suportam-na (que acho que são os mais utilizados).

Exemplo de sprintf:

sprintf(str,"%d",value);


<Signature goes here>

Share this post


Link to post
Share on other sites
rjfs

Fiquei por:

palavra[0]=k+'0';  // Obrigado xtrm0

Gostava de saber usar bem uma função standard que desse para ints maiores que 9, mas logo investigo isso mais tarde.

Obrigado a todos.

Share this post


Link to post
Share on other sites
daj

Quem é que tem paciencia para ler o link que meteste? 😲

Lê quem quer. Não dou uma resposta mais longa porque depois não terias paciência para ler.

Share this post


Link to post
Share on other sites
xtrm0

Ja tinha dito, a sprintf dá:

int k=123;
char e[33];
sprintf(e,"%d",k);


<Signature goes here>

Share this post


Link to post
Share on other sites
Localhost

@xtrm0: tens de ter mais atenção a escrever os teus posts e a começar a relê-los quando os escreves e até fazer as correcções necessárias após pesquisares e te informares bem sobre o assunto sobre o qual postas.

O @daj aconselhou a função snprintf porque é que uma função mais segura que a sprintf visto que passámos para ela o tamanho do buffer e assim não corremos o perigo de ocorrer um buffer overflow.


here since 2009

Share this post


Link to post
Share on other sites
xtrm0

Ok. Desculpem, Esquecime que não havia cout em c. 😳

Está aqui com snprintf:

int k=0;
char e[33];
snprintf (e, 32, "%d", k);


<Signature goes here>

Share this post


Link to post
Share on other sites

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.