Olá pessoal,   Sou novo aqui no fórum, então se estou cometendo alguma irregularidade, me notifiquem por favor. O meu problema é o seguinte: estou usando compilador Dev C++ versão 4.9.9.2 em Windows XP e o seguinte código não está fornecendo o resultado esperado:   #include <dos.h>
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>
#include <string.h>
#include <time.h>
typedef unsigned char byte;
struct t_medicamento
    {
     char codigo[10];          
     int categoria;            
     char principioativo[50];
    };
    
    int main()
    {
   struct t_medicamento medicamento;
   void *ptrRegistro;
   byte *ptrByteRegistro;
   char *ptrCharRegistro;
   char strCampo1[30], strCampo2[30], strCampo3[30];
   
   strcpy(medicamento.codigo, "XYZ");
   medicamento.categoria = 5;
   strcpy(medicamento.principioativo, "ABCDEF");
   
   ptrByteRegistro = (byte*)(&medicamento);
   ptrRegistro = ptrByteRegistro;
   sprintf(strCampo1, "%s", (char*)(ptrRegistro));
   
   ptrRegistro = ptrByteRegistro + 10*sizeof(char);
   sprintf(strCampo2, "%d", *((int*)(ptrRegistro)));
   
   ptrRegistro = ptrByteRegistro + 10*sizeof(char) + sizeof(int);
   sprintf(strCampo3, "%s", (char*)ptrRegistro);
   
   printf("%s\n", strCampo1);
   printf("%s\n", strCampo2);
   printf("%s\n", strCampo3);
   getch();
   
   return 1;
 }    Ou seja, eu esperaria que no final fossem impressas as strings "XYZ", "5" e "ABCDEF", correto? No entanto, dependendo dos tamanhos dos campos de código e princípio ativo (que no código de exemplo estão com 10 e 50 bytes, respectivamente) às vezes aparece só "YZ" e "BCDEF", por exemplo. O que pode estar acontecendo? Muito obrigado.