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.