J'ai créé le pointeur et lui ai alloué de la mémoire. Cette mémoire doit contenir le nombre, que je passe à l'intérieur dans le style de tableau (1 nombre = 1 élément), aussi, l'élément 0 est la taille du nombre. Cependant, je suis confronté au problème de la modification des données dans la mémoire allouée, en utilisant un pointeur. Si j'utilise mon code dans la fonction principale, tout se passe parfaitement, mais quand je crée une autre fonction et que je lui passe une valeur de pointeur, je ne peux pas la sauvegarder (si le nombre est plus grand que 99999 et prend 6 éléments stocké).Utilisation du pointeur de mémoire allouée à l'intérieur de la fonction
La fonction principale:
int *convNum=NULL;
int main() {
int num;
convNum = malloc(sizeof(int));
if (convNum==NULL){
printf("Allocation error\n");
exit(0);
}
scanf("%d", &num);
convNum[0] = numLength(num);
printf("%d\n", convNum[0]);
convertNum(num, convNum);
for (int i = 1; i<=convNum[0]; i++){
printf("%d", convNum[i]);
}
printf("\n");
return 0;
}
La fonction, que je suis en train d'utiliser
int convertNum(int num, int * convNum){
int temp = num;
int size = convNum[0];
convNum = realloc(convNum, sizeof(int)*(size+1));
if (convNum==NULL){
printf("Allocation error\n");
exit(0);
}
for (int i=size;i>0;i--){
convNum[i] = temp % 10;
temp = temp/10;
}
return 0;
}
ÉDITÉE La sortie avec la taille du nombre moins, que 6 me donne le résultat J'ai eu besoin. La sortie avec d'autres nombres me donne la taille cassée (quelque chose comme -10349945820) et aucun résultat approprié.
Copie possible de [C - pointeurs en tant qu'arguments de la fonction] (https://stackoverflow.com/questions/18698317/c-pointers-as-function-arguments) –
Possible duplication de [C Programming: malloc() dans un autre function] (https://stackoverflow.com/questions/2838038/c-programming-malloc-inside-another-function) – melpomene