Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Robz Lancaster

Converter Int para Char/String

Recommended Posts

#OFF

Pessoal Antes de mais nada, você verão muitos tópicos sobre C por aqui, pois estou tentando desenvolver uma criptografia simples para os scripts *-*( jogo ).

 

#TOPICO

 

É o seguinte pessoal preciso converter um inteiro para uma String ?

ouvi falar sobre ITOA, mas não entendi muito bem como ele funciona poderia dar uma ajuda.

 

Bem Eu Preciso Transforma-lo Em String porque para descriptografar o arquivo eu vou ter que ter uma chave de identificação

para cada cadeia de números referente as letras.

 

simbolo Chave Seria:

 

Código base Crypt:


#include <stdio.h>
#include <string.h>

int getpos(char letra)
{
int i;
char alfabeto[] = " <abcdefghijklmnopqrstuvwxyzçéáíúóãõABCDEFGHIJKLMNOPQRSTUVWXYZÇÁÉÓÍÚÃÕ1234567890.;:?,º]}§[{ª!@#$%&*()_+-=\\/|\'\">¤";
int tamanho = strlen(alfabeto);

for (i = 0; i<=tamanho; i++) {
if (alfabeto[i] == letra)
return i;
}
return -1;
}

void criptografa(char texto[])
{
int tamanho;
int posicao;
tamanho = strlen(texto);
int i = 0;
for(; i < tamanho; i++) {
posicao = getpos(texto[i]);
printf(" posicao %d \n",posicao);
}

}

//void descriptgrafa(char cripter)
// {
//int tamanho;
//char palavra[];

// tamanho = strlen(cripter);
// int i = 0;
//for(; i < tamanho; i++) {
// posicao = +getpos(texto[i]);
//printf(" posicao %d \n",posicao);
// }

//}

int main()
{
int teste;
criptografa("Robert");
getch();
return 0;
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então, cara.

 

Você pode utilizar a função itoa, mas esta função não faz parte da biblioteca standard.

Isto tira um pouco da compatibilidade o programa.

 

Espero ter ajudado, FLW!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você pode criar sua própria função sem perder nada em compatibilidade é simples. Mas como sei que tudo na primeira vez é difícil, vou da um exemplo:

 

void itos (char* s, int n)
{
   int tmpval, digs = 0;

   if(n == 0)
   {
       *s++ = '0';
       *s = '\0';
       return;
   }

   if(n < 0)
   {
       n = -n;
       *s++ = '-';
   }

   tmpval = n;

   while(tmpval)
   {
       tmpval /= 10;
       digs++;
   }

   s += digs;
   *s-- = '\0';

   while(n)
   {
       *s-- = '0' + (n % 10);
       n /= 10;
   }
}

 

Se este código for útil fique a vontade para usa-lo e/ou modifica-lo, este código está de acordo com o ANSI C.

 

Sugiro que use strtod.

Você está equivocado, pois strtod converte uma cadeia de caracteres (string) em um ponto flutuante de dupla precisão (double), o que o próprio nome sugere.

 

Na realidade estou um pouco confuso depois de analisar melhor o seu código.

Vejamos se o entendi, você quer converter apenas um caractere para sua respectiva posição na tabela ASCII, se for isso mesmo não se faz necessária um conversão, mas sim uma reinterpretação de cast, veja:

 

char c = 'a';
int p = (int)c;

 

Mas a maioria do compiladores aceita o seguinte código:

 

char c = 'a';
int p = c;

 

Eu sei que isso pode ser um pouco trivial e você já saiba, assim sendo o código anterior (stoi) é valido.

 

Se nada é suficiente para solver o seu problema, especifique mais sua duvida.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Certo, Mateus.

 

Quis dizer strtol. Não é a primeira vez que faço essa confusão.

Confundir faz parte da vida, também já confundi varias funções...

Ainda mais fácil se são essas funções:

strtod string para double;

strtok para dividir um string em outro menor, tokens;

strtol string para long int.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.