Je tente de copier un caractère d'un tableau vers un pointeur de caractère au moyen d'une fonction. À la suite de mon code:memcpy copie un objet tableau vers un pointeur de caractère en C mais pas l'inverse
#include<stdio.h>
void pass(void* arg){
char arr[1];
arr[0]='X';
memcpy((char *)arg,arr,1);
}
void main(){
char *buf=malloc(sizeof(char));
pass(buf);
printf("%c",buf);
free(buf);
}
Ici, le pointeur buf imprime une valeur de déchets. J'ai essayé l'inverse du programme ci-dessus comme suit:
#include<stdio.h>
void pass(void* arg){
char arr[1];
memcpy(arr,(char *)arg,1);
printf("%c",arr[0]);
}
void main(){
char *buf=malloc(sizeof(char));
buf[0]='X';
pass(buf);
free(buf);
}
Ce fut un succès et arr [0] imprime la valeur en tant que X. Quelqu'un pourrait-il expliquer pourquoi le premier cas échouent?
Tournez le bouton d'avertissement d'un cran. –