zecapistolas Posted November 23, 2009 at 12:48 PM Report Share #297268 Posted November 23, 2009 at 12:48 PM 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 🙂 Link to comment Share on other sites More sharing options...
Ferreira Posted November 23, 2009 at 01:15 PM Report Share #297270 Posted November 23, 2009 at 01:15 PM 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. http://twitter.com/ferreira Link to comment Share on other sites More sharing options...
zecapistolas Posted November 23, 2009 at 03:01 PM Author Report Share #297278 Posted November 23, 2009 at 03:01 PM 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.... ? Será que não nada mais prático que criar um buffer e ir fazendo várias leituras?! cumps 🙂 Link to comment Share on other sites More sharing options...
mogers Posted November 23, 2009 at 03:16 PM Report Share #297283 Posted November 23, 2009 at 03:16 PM 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 🙂 ) "What we do for ourselves dies with us. What we do for others and the world, remains and is immortal.", Albert Pine Blog pessoal : contém alguns puzzles, algoritmos e problemas para se resolver com programação. Link to comment Share on other sites More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now