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:
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.
Pergunta
AlexPocosC
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.
Link para o comentário
Compartilhar em outros sites
7 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.