Ir ao conteúdo

Posts recomendados

Postado

Olá, estou querendo transformar uma variável int em que o usuário digita para uma variável string para eu verificar quantos algarismos o número tem. Eu tentei usar o :

int n;
char string[10];

itoa(n,&string,10);

 

Mas na hora de executar ele dá erro sobre a função "itoa". Eu pesquisei na internet e parece que essa função não está mais sendo usada atualmente no Windows e Linux.

Postado

@blvsman Dê uma olhada aqui na expansão dessa tal função itoa():

char* itoa(int value, char* result, int base) {
    // check that the base if valid
    if (base < 2 || base > 36) { *result = '\0'; return result; }

    char* ptr = result, *ptr1 = result, tmp_char;
    int tmp_value;

    do {
        tmp_value = value;
        value /= base;
        *ptr++ = "zyxwvutsrqponmlkjihgfedcba9876543210123456789abcdefghijklmnopqrstuvwxyz" [35 + (tmp_value - value * base)];
    } while ( value );

    // Apply negative sign
    if (tmp_value < 0) *ptr++ = '-';
    *ptr-- = '\0';
    while(ptr1 < ptr) {
        tmp_char = *ptr;
        *ptr--= *ptr1;
        *ptr1++ = tmp_char;
    }
    return result;
}

De preferência, você pode usar sprintf() ou snprintf(), é mais prático.

Postado

Decomponha seu valor até 0: O número de algarismo é também o número máximo das divisões de resultado inteiro pela base. No procedimento, o quociente da divisão inteira é o dividendo da operação seguinte, o divisor é sempre a base 10.

 

C11

size_t numero_de_algarimos_em (int numero){
	size_t ctdor = 0;
	do {
		++ ctdor;
	} while ((numero *= .1));
	return ctdor;
}

 

  • Curtir 2
Postado
3 horas atrás, blvsman disse:

Olá, estou querendo transformar uma variável int em que o usuário digita para uma variável string para eu verificar quantos algarismos o número tem

 

Se o usuário digita já é uma string e podia já ler como tal ou aceitar como argumento.

 

Para verificar quantos dígitos tem não precisa converter para string

 

3 horas atrás, blvsman disse:

Mas na hora de executar ele dá erro sobre a função "itoa". Eu pesquisei na internet e parece que essa função não está mais sendo usada atualmente no Windows e Linux

 

A função está disponível no Windows no compilador da Microsotf até 2020 em stdlib

https://docs.microsoft.com/pt-br/cpp/c-runtime-library/reference/itoa-itow?view=vs-2019

 

Para os casos de decimal e hexadecimal, os mais comuns, pode usar sprintf() com o mesmo efeito

Postado

blvsman.png.edfb83421560f99c5ac1a2fa59d2de8f.png

 

Tem a mesma relação que um meio para o fim: Traduzir uma variável int para uma a string, é um procedimento que envolve decompor o valor na variável inteiro em suas unidades e Mais. O Mais, não importa muito porque o objetivo é o número de dígitos, mais precisamente, algarismos. 

 

Para evitar ambiguidade, símbolos \ dígitos é menos preciso que algarismos indo-arábico ou comumente só algarismos. O único sistema de numeração que se utiliza exclusivamente do algarismo é o decimal.

Mais

  • O Binário com 2 dígitos: 01
  • O Hexadecimal com 16 dígitos \ símbolos: Conj. Algarismos + ABCDF  

Ainda resta os algarismos romanos, quem lembra deles? Pois é, esses a sprintf desconhece totalmente.

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!