C'est normal qu'il y ait une erreur Chris, dans le premier cas tu crée pointeur qui pointe sur l'adresse mémoire crée statiquement pour loger "puic".
Dans le second cas tu crée un tableau statique de 10 caractères, tu dois donc le remplir caractère par caractère, ou bien avec strcpy.
Un code qui pourra ptet t'aider :
- include <stdio.h>
- include <string.h>
- include <stdlib.h>
int main(void){
char tmp[10];
char* foo = (char*) malloc(5 * sizeof(char));
printf("Ladresse que pointe foo est :\n");
printf("%p\n",foo);
- (foo) = 'p';
- (foo+1) = 'u';
foo[2] = 'i';
foo[3] = 'c';
printf("Ladresse que pointe foo est :\n");
printf("%p\n",foo);
strcpy(foo,"puic");
printf("Ladresse que pointe foo est :\n");
printf("%p\n",foo);
foo="dfghnbrghrbhgrbghrbghrbkjh";
printf("Ladresse que pointe foo est:\n");
printf("%p\n",foo);
//On va donner une valeur a tmp...
strcpy(tmp,"puic");
printf("Voici ce que valent tmp et foo :\n");
printf("%s\n",tmp);
printf("%s\n",foo);
printf("Si maintenant je tente un strcpy sur foo...\n");
strcpy(foo,"Aïe");
}
En voici la sortie :
Schmac:Dev Paul$ ./a.out
Ladresse que pointe foo est :
0x100120
Ladresse que pointe foo est :
0x100120
Ladresse que pointe foo est :
0x100120
Ladresse que pointe foo est:
0x1f76
Voici ce que valent tmp et foo :
puic
dfghnbrghrbhgrbghrbghrbkjh
Si maintenant je tente un strcpy sur foo...
Bus error