Ir ao conteúdo

Posts recomendados

Postado
//Programa que imprime a memória utilizada por tipos de dados
#include <stdio.h>
  
void rotina (char texto[6]) {
    int tamanho = sizeof (texto);
    printf ("%s:\n",texto);
    printf ("Tamanho em bytes: %i\n\n",tamanho);
}

void main (void){
    rotina ("char");
    rotina ("int");
    rotina ("float");
}

Boa noite,

Estou querendo fazer um programa que imprima a quantidade de memória em bytes que cada tipo de dados ocupa (porque em máquinas diferentes os valores podem ser diferentes).

Inicialmente escrevi o código apenas com a função main, repetindo o printf para cada tipo de dado, da seguinte forma:

...

   printf ("Tamanho em bytes: %i \n", sizeof (char);

   printf ("Tamanho em bytes: %i \n", sizeof (int);

...

Deu certo,

Porém depois decidi tentar usar uma outra função para não precisar repetir o printf e fiz da maneira em que coloquei o código aqui.

O retorno que o programa está dando é sempre 4 bytes, ou seja, o tamanho de char texto[6].

Já percebi que o problema é que em sizeof (texto) o valor que está sendo devolvido é o tamanho da variável texto,

mas gostaria que no lugar de texto fosse inserido o conteúdo da variável, ou seja, as strings "char", "int" , "float" , para que fosse retornado o tamanho de cada tipo de dado respectivo.

Tentei escrever no lugar de sizeof (texto) assim:

sizeof ("%s",texto);

Porém não deu certo.

Gostaria de saber se existe alguma maneira de que no parâmetro de sizeof fosse inserido o conteúdo da variável (string) e não a própria variável.

Agradeço se alguém souber responder.

Postado

@Eric MGS Em uma string só há char's(caracteres) relacionado a um decimal da tabela ascii, portanto sizeof(char) tem a mesma quantidade de bytes que sizeof(int)

 

Para ter os bytes de cada tipo, da string, você precisa separar esses valores, seja com scanf, etc, armazenar em uma variável temporária e depois usar sizeof

Postado
9 horas atrás, TYSQUARE89 disse:

@Eric MGS Em uma string só há char's(caracteres) relacionado a um decimal da tabela ascii, portanto sizeof(char) tem a mesma quantidade de bytes que sizeof(int)

 

Para ter os bytes de cada tipo, da string, você precisa separar esses valores, seja com scanf, etc, armazenar em uma variável temporária e depois usar sizeof

 

Você quis dizer pra fazer algo assim?

Continua dando errado.

void main (void){
    char temp[5];
    scanf("%s",temp);
    int tamanho = sizeof (temp);
    printf("Tamanho: %i", tamanho);
}

 

Postado

@Eric MGS Vamos supor que você escreva na entrada:

 

João recebeu 1 salário de 4.300,35 em 3.0 dias.

 

Essa entrada é 'armazenada' em uma string.

Porém você quer separar todos elementos, identificar seu tipo e então verificar com sizeof.

 

Portanto é preciso separar, mas antes temos que identificar cada coisa, exemlpo:

 

Joao         - string 

recebeu    - string 

1                - int

salário      - string

de              - string

4.300,35   - float

em             - string

3.0             - int / float

dias           - string

 

Para identificar é preciso criar um algorítimo ou usar strtok, para separar, assim depois de separar cada palavra, é preciso verificar se tal char é um numero, e encontrar seu fim. Ao encontrar o fim do número é preciso manter ele em um buffer e usar atoi, atol, etc.Exemplo:

 

 

mensagem[100] = "João recebeu 1 salário de 4.300,35 em 3.0 dias"

 

mensagem[0][ ]  == isalpha ?

true

 -> nova string Palavra -> encontrar final

 

false

 -> verificar se é numero -> encontrar final

 

é só você encontrar uma forma de separar os elementos e identificar o tipo

 

 

 

 

 

 

Postado

Bom, resolvi deixar do jeito que estava antes, com algumas linhas a mais. Como sou iniciante logo eu aprendo novas funções e volto a tentar, se não vou acabar confundindo tudo.

Valeu aí pela ajuda.

  • Curtir 1

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