J'ai un pointeur sur mon tableau char comme ceci.Passage d'un pointeur sur un tableau char vers une fonction
unsigned char *recvBuf;
recvBuf = (unsigned char *)malloc(sizeof(char)*RECVBUF);
Je passe alors que, pour une fonction définie comme
void setHeader(MyHeader *myHeader, unsigned char *buffer)
qui copie les 12 premiers octets dans un struct
Alors je tente de passer à une autre fonction plus tard
Record readRecord(unsigned char *buffer, int *arrayPosition, int buffsize)
Mais le programme ne répond toujours pas lorsque j'essaie d'accéder à une partie du tableau ing [], exactement de la même manière que dans la précédente. Et je vais aussi bien y accéder comme ça avant de le passer à la fonction.
Des idées seraient grandement appréciées.
Merci
EDIT:
Pointeurs sont les mêmes.
C'est à l'intérieur de la deuxième fonction
J'ai ajouté ce code au dessus et il fonctionne très bien
int k = *arrayPosition;
printf("%p \n", buffer);
printf("%c \n", buffer[k]);
Voici le code original, le programme devient adfter ne répond i = * de arrayposition .. .
int i, j;
Record *myRecord;
Resource *myResource;
unsigned char name[255];
unsigned char data[50];
unsigned int offset;
i = *arrayPosition;
while(buffer[i] != '\0')
{
if((buffer[i] & 0xC000) == 0xC000)
{
Etes-vous sûr de ne pas modifier la valeur du pointeur dans l'une des fonctions? Détestez-vous le pointeur lors de l'insertion de données? – Jack
Quelques soucis stylistiques: En C (mais pas en C++), il est généralement considéré comme un mauvais style de convertir la valeur de retour de 'malloc', car' void * 'est implicitement converti en un autre type de pointeur. De même, 'sizeof (char)' est toujours 1 en C (et C++), donc multiplier par lui est redondant. La deuxième ligne de code devrait juste être ceci: 'recvBuf = malloc (RECVBUF);'. – bcat
Je pense que la plupart des compilateurs supprimeront cette redondance. Parfois, il est juste utilisé pour écrire du code plus clair: size_of_item * number_of_items – Jack