Ir ao conteúdo
  • Cadastre-se

rafaelrrf

Membro Pleno
  • Posts

    45
  • Cadastrado em

  • Última visita

Tudo que rafaelrrf postou

  1. Pessoal, Como seria possivel obter o numero de bytes de um endereço de um ponteiro? por exemplo: char x[100]; char *ptr; ptr = &x; sizeof(*ptr); O que eu tento fazer é dar um sizeof no conteudo do ponteiro, mas quando faço isso obtenho o numero de bytes do tipo do ponteiro. Alguma sugestao para obter o numero de bytes do endereço do ptr?
  2. rafaelrrf

    Struct

    Sim, mas vamos supor que o tamanho do atributo da struct, nós não conhecemos. Eu só quero saber se é possivel obter o numero de bytes atraves de um ponteiro de um atributo que é a apontado pelo mesmo.
  3. rafaelrrf

    SizeOf

    Pessoal se eu tenho uma struct Teste, por ex: struct Teste {int a;char b[10];}Teste;void main() {char *ponteiro;ponteiro = &Teste.b;printf("Sizeof do atributo B: %d", sizeof(ponteiro));} Porque quando dou o printf ele não me da o numero de bytes do atributo da struct? Ele está me dando o numero de bytes da variavel ponteiro, mas eu quero o numero de bytes do atributo que ela está apontando. Alguem saberia? Agradeço.
  4. rafaelrrf

    Struct

    Pessoal, se eu tenho um ponteiro do tipo char que aponta para o endereço da struct "Teste", por exemplo: char *ponteiro = &Teste; Supondo que o endereço apontado pelo ponteiro seja 0x0001, ou seja, o endereço do primeiro atributo da struct. Como eu faria para incrementar esse ponteiro para que ele recebesse o endereço do segundo atributo da struct?
  5. rafaelrrf

    Ponteiros

    Legal @isrnick, ajudou muito. Resolvido.
  6. rafaelrrf

    Ponteiros

    Legal @isrnick, parece que este é o caminho. Afinal, pode me explicar o que está acontecendo no código? Agradeço.
  7. rafaelrrf

    Ponteiros

    Eu quero imprimir meu buffer. Sim, cada char ocupa 1 Byte. Vejamos um novo exemplo, tenho um vetor de char de 50 bytes : char buffer[50]. E uma variavel inteira: int x = 10. O que eu quero é passar apenas o valor de "x" para o "buffer", ou seja, como x tem 4 bytes, acredito que ocupara então 4 bytes no buffer. Sendo assim ocupará 4 posições no buffer, certo? Mas eu quero fazer essa passagem sem usar funções de conversão, como sprintf. O que eu quero é algo como passar o conteudo do endereço de cada byte do inteiro para o buffer usando ponteiros, mas n estou conseguindo fazer isso. Conseguiu entender?
  8. rafaelrrf

    Ponteiros

    E porque não consigo imprimir o vetor char com %s? Por exemplo: printf( "show int32_b: = %s\n", int32_b ); Isso quer dizer que algo foi modificado...
  9. rafaelrrf

    Ponteiros

    Mas em quais posições do array eu estou inserindo o numero 10 que é o valor de x? Como eu faria para inserir em outra posição? Pelo visto você esta convertendo o array para um inteiro com o cast, mas eu não quero me desfazer dele, preciso imprimir ele como uma string. Pois também tenho que inserir nesse array, caracteres, além dos valores inteiros. Seria possível?
  10. rafaelrrf

    Ponteiros

    Não quero usar nenhum tipo de conversão como sprintf etc. O que eu queria fazer era atribuir o valor inteiro que tem 4 bytes no meu sistema, para o vetor char, ocupando apenas 4 bytes no mesmo, seria possível?
  11. rafaelrrf

    Ponteiros

    Viventes, Se eu tenho um vetor char de 10 posições: char v[10]. E um inteiro x com valor 10: int x = 10. Como eu poderia passar para o vetor "v" o valor inteiro em "x" usando ponteiros?
  12. Amigo, tente ler novamente minha pergunta, acho que você não entendeu...
  13. Pessoal Eu tenho um vetor buffer do tipo char, e quero alocar nele um valor inteiro, como isso é possível sem utilizar a função sprintf ? e como obter o numero de numeros contidos no valor da variável? Pois o meu problema é que tenho uma estrutura, e tenho no corpo do programa um buffer que vai receber todos os atributos da estrutura, cada atributo na sua sequencia. E estou usando subtração de ponteiros obter o deslocamento de cada atributo no buffer, com o deslocamento obtido eu consigo armazenar os valores das variaveis na sua sequencia, mas o problema são as variaveis do tipo int e float na estrutura, porque quando faço o deslocamento com ponteiros, ele conta apenas 4 bytes(Tamanho de um int). E se eu tiver usado o sprintf, e inserido os valores no buffer, se o valor conter mais que 4 numeros, o ultimo provavelmente será sobreposto pelo proximo atributo da estrutura. Podem ajudar?
  14. rafaelrrf

    Macro de função

    Consegui fazer sem o return rs. Nao sei se é posivel usar esse comando em uma macro. Mas tudo bem. Um problema que ocorreu na macro é esse: note: in expansion of macro 'func' Sabe resolver isso?
  15. rafaelrrf

    Macro de função

    Hum isso eu entendo. O meu problema é que eu tenho uma função que está retornando um char *, e quero transformar ela em uma macro...
  16. rafaelrrf

    Macro de função

    Como eu poderia fazer ela retornar algo? como um return de função. 0 e -1
  17. Pessoal, Alguem saberia como criar uma macro da função abaixo: int func(int *a, int * {int c = *a+*b;return c;}
  18. Opa deu certo, Obrigado pela ajuda ^^. Pode me explicar melhor como isso funciona?
  19. Exato, este exemplo não esta completo. v1, v2 e v3 fazem parte de um struct externa. Fiz testes criando v1, v2 e v3 local e deu certo. O problema esta em alguma coisa na struct :s struct teste {char v1[5];char v2[5];char v3[5];}teste;void main() {char *buffer = "AAAAABBBBBCCCCC";char *ptr;ptr = &buffer[0];strncpy(teste.v1, ptr, 5);ptr = &buffer[10)]; strncpy(teste.v2, ptr, 5);ptr = &buffer[20];strncpy(teste.v3, ptr, 5);}
  20. Sim. Não funcionou colocando o caracter \0, eu fiz v1[9] = '\0' antes de imprimir que é a ultinha posição no final Ta fazendo isso: V1: AAAAABBBBBCCCCC V2: BBBBBCCCCC V3: CCCCCC Se eu dou um printf em baixo de cada strncat, ele faz a impressão correta. Mas quando faço dps dos três strncat faz isso, concatena todos ><
  21. Deu certo aquele codigo agora. Mas causou outro problema aqui, quando executa esse codigo: ptr = &buffer[0]; strncpy(v1, ptr, 5); ptr = &buffer[10)]; strncpy(v2, ptr, 5); ptr = &buffer[20]; strncpy(v3, ptr, 5); Estou copiando do buffer alguns bytes para v1, v2, v3 usando ptr para determinar a posição. Mas quando dou um printf em v1,v2 e v3. V1 fica concatenado com v2, e v2 fica concatenado com v3. Saberia me dizer onde esta o erro?
  22. Por exemplo: Eu tenho um vetor char vet[1000], e outro char atributo[10]. Eu queria passar o endereço de cada um para ponteiros diferentes para fazer uma subtração dos dois. Neste caso eu poderia obter o valor 1000 ou 10. É o que ocorre neste cod: char *ptr1, *ptr2, *aux; char v1[8], v2[33270]; ptr1 = &v1[0]; ptr2 = &v2[0]; printf("%d\n", ptr1); printf("%d\n", ptr2); printf("%d\n", ptr1-ptr2); Ele roda no windows certo, mas no linux o valor da subtração não bate com o tamanho em bytes do vetor v1 e v2.
  23. Sim, exato. E como eu faria isso? Neste codigo: char *pont1, *pont2; char v1[33270], v2[10]; pont1 = v1; // pont1 = &v1[0] pont2 = v2; printf("PTR1: %li\n", pont1); printf("PTR2: %li\n", pont2); printf("RESULTADO: %li\n", pont1-pont2); o RESULTADO da 1296, sendo que teria que dar 10. Compilei esse codigo no Windows e funcionou, portanto estou usando o Ubuntu, não sei se isso interfere.
  24. Deu certo tirando o &. Valeu! @olliver.soul, O que pretendo é pegar os endereço dos dois ponteiros, subtrair para obter o valor de um dos vetores (v1 e v2). Quando altero para %s da esse warning: progc.h:23:2: warning: format ‘%s’ expects argument of type ‘char *’, but argume nt 2 has type ‘long int’ [-Wformat=] printf("RESULTADO: %s\n", ptr1-ptr2);
  25. Pessoal, Estou usando este codigo: char v1[10000], v2[8]; ptr1 = &v1; ptr2 = &v2; printf("PTR1: %li\n", ptr1); printf("PTR2: %li\n", ptr2); Quando eu compilo ele, ocorre este erro: progc.h:16:7: warning: assignment from incompatible pointer type [enabled by default] ptr1 = &v1; ^ progc.h:17:7: warning: assignment from incompatible pointer type [enabled by default] ptr2 = &v2; ^ progc.h:19:2: warning: format ‘%li’ expects argument of type ‘long int’, but argument 2 has type ‘char *’ [-Wformat=] printf("PTR1: %li\n", ptr1); ^ progc.h:20:2: warning: format ‘%li’ expects argument of type ‘long int’, but argument 2 has type ‘char *’ [-Wformat=] printf("PTR2: %li\n", ptr2); Alguem saberia resolver esses warnings?

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

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!