• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

zecapistolas

size_t variável

4 mensagens neste tópico

Viva Pessoal,

Ao utilizar a função read() e write() preciso de saber qual o tamanho em bytes da "string" que vou ler ou escrever no/do ficheiro....

size_t tam = sizeof("variável char *");

Se imprimir o valor da variável "tam" dá 4 bytes, mas a minha "string" precisa de umas vezes mais, outras vezes menos.... Como é que sei esse número de bytes que preciso?!

cumps  :)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

São 4 bytes porque o tamanho que estás a calcular é o do ponteiro para a string.

A solução para isto é usar um buffer com um tamanho fixo e fazer várias leituras, verificando se já acabou a string.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

São 4 bytes porque o tamanho que estás a calcular é o do ponteiro para a string.

A solução para isto é usar um buffer com um tamanho fixo e fazer várias leituras, verificando se já acabou a string.

Pois, eu sei que são 4 bytes por ser um char *.... O que tenho agora é sempre size_t = 100, mas não é nada correcto porque tanto posso ter uma "string" com 2 caracteres ou com 80 é igual.... E queria algo mais realista, até porque se precisar de um size_t maior que 100 já não vai dar....  :thumbdown:

Será que não nada mais prático que criar um buffer e ir fazendo várias leituras?!

cumps  :)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

No write de uma string, o tamanho é igual ao strlen da string porque cada char ocupa 1 byte ( sizeof(char) = 1 por definição do operador ).

Para o read acho que tem de ser como o Ferreira sugeriu porque não há nada que te "adivinhe o que vem aí" (penso eu de que :))

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora