J'ai une variableComment trouver la longueur de unsigned char * en C
unsigned char* data = MyFunction();
comment trouver la longueur des données?
J'ai une variableComment trouver la longueur de unsigned char * en C
unsigned char* data = MyFunction();
comment trouver la longueur des données?
En supposant un son string
length = strlen(char*);
mais il ne semble pas être ... donc il n'y a pas un moyen sans ayant la fonction retourne la longueur.
Vous devrez repasser la longueur des données à MyFunction
. Assurez-vous également de savoir qui attribue la mémoire et qui doit la libérer. Il existe différents modèles pour cela. Très souvent, je l'ai vu:
int MyFunction(unsigned char* data, size_t* datalen)
Vous allouez ensuite les données et passer DataLen dans le résultat (int) devrait alors indiquer si votre tampon (données) est assez long ...
Comme dit précédemment strlen. ne fonctionne que dans les chaînes terminées par NULL, donc le premier 0 (caractère '\ 0') marquera la fin de la chaîne. Vous êtes mieux de faire someting comme ceci:
unsigned int size;
unsigned char* data = MyFunction(&size);
ou
unsigned char* data;
unsigned int size = MyFunction(data);
Maintenant, ce qui est vraiment pas difficile. Vous avez un pointeur sur le premier caractère de la chaîne. Vous devez incrémenter ce pointeur jusqu'à ce que vous atteigniez un caractère avec une valeur nulle. Vous soustrayez ensuite le pointeur final du pointeur d'origine et voila vous avez la longueur de la chaîne.
int strlen(unsigned char *string_start)
{
/* Initialize a unsigned char pointer here */
/* A loop that starts at string_start and
* is increment by one until it's value is zero,
*e.g. while(*s!=0) or just simply while(*s) */
/* Return the difference of the incremented pointer and the original pointer */
}
L'auteur demande combien de mémoire est affectée au pointeur char * Votre condition à terminaison nulle ne se trouve pas –
#include <stdio.h>
#include <limits.h>
int lengthOfU(unsigned char * str)
{
int i = 0;
while(*(str++)){
i++;
if(i == INT_MAX)
return -1;
}
return i;
}
HTH
Lorsque contenir 0x0 va produire une longueur incorrecte – user956584
La question originale n'a pas dit que les données renvoyées est une chaîne terminée par zéro. Sinon, il n'y a aucun moyen de connaître la taille des données. Si c'est une chaîne, utilisez strlen ou écrivez la vôtre. La seule raison de ne pas utiliser strlen est si c'est un problème de devoirs, donc je ne vais pas l'épeler pour vous.
Il n'y a aucun moyen de trouver la taille (unsigned char *)
si elle est
Votre retour fn char * – yesraaj
Vous aurez un nulle fin de ne pas nous donner plus de détails sur myFunction():. Qu'est-ce qu'il –