probleme avec les malloc snprintf
Bonjour a tous, j'ai un petit soucis concernant la fonction malloc et snprintf:
Voila le sequencement de mon programme:
- lecture des donnees dans un pipe (ex de donnees lues: 0xFDOO1F4142..... c'est du texte code en ASCII ne depassant pas 100 caracteres)
- allocation dynamique de memoire de la taille des donnees lues dans le pipe
- ecriture du message recu dans le pipe dans un ficher texte
Voici le code isole effectuant ces operations:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
| char *pMessageToSend;
int i;
char messageToReceive[1024];
fileRead = ReadFile(
gphAutomaticTestTool_HandlePipe,
messageToReceive,
1024,
&bytesRead,
NULL);
pMessageToSend = malloc(bytesRead);
for(i = 0; i < bytesRead; i++)
{
snprintf(&pMessageToSend[i],
sizeof(pMessageToSend),
"%c",
messageToReceive[i]);
}
written = fwrite(pMessageToSend,
1,
strlen(pMessageToSend),
gpphAutomaticTestTool_ErrorFile);
free(pMessageToSend); |
Le probleme que je rencontre est: The memory at "0x79c...." could not be read ou un probleme de socket error 10055.
J'ai probablement mal utilise snprintf ou le malloc. Merci de votre lumiere.
Probleme avec les malloc et snprintf
Merci de ta reponse et voila la reponse a tes questions:
Oui j'ai oublie des etapes dans ma sequence d'operations:oops:
Question1: je veux recuperer les valeur code en ASCII et les convertir pour lesenregistrer dans le fichier en caractere
Question2: elle decoule de la question 1. je formatte ma chaine a enregistrer. En gros je lis les caracteres ASCII dans le pipe et les transforme en texte pour les enregistrer dans un fichier
Voila merci. Par contre concernant le "strlen" lors du fwrite() il faudrait le remplacer par une autre fonction du genre sizeof(pMessageToSend) ???
Probleme avec les malloc et snprintf
Ok c'est juste ce que tu me dis.
le hic c'est que la boucle for sert a convertir les donnees en ASCII du pipe en texte dans la variable tampon "pMessaToSend".
C'est du texte que je veux ecrire dans le ficher et pas le code ASCII.
Sinon le sizeof est correct car j'affiche bien les caracteres souhaite. Si je passe le sizeof(*pMessaToSend) j'ai des caracteres indesire a la fin.
Probleme avec les malloc et snprintf
Desole si mon probleme etait confu !
Oui je recois que de l'hexadecimal (code ASCII) et ma chaine commence bien par un 0x...
Typiquement le client du serveur pipe ecrit : 0x00FC001F4143.....
Moi je traite ces donnes pour les ecrire dans un fichier texte