Bonjour.
Je ne comprend pas pourquoi et ont un comportement différent

Ce code fonctionne parfaitement
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
#include <stdio.h>
#include <stdlib.h>
#include<string.h>
 
int main(void) {
	char mot[] = "test";
	printf("%s est de longueur %lu\n", mot, strlen(mot));
	printf("mot[1]  : %c\n", mot[1]);
	mot[1] = 'o';
	printf("%s\n", mot);
	return EXIT_SUCCESS;
}
et affiche
test est de longueur 4
mot[1] : e
tost
Mais celui-ci
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
#include <stdio.h>
#include <stdlib.h>
#include<string.h>
 
int main(void) {
	char *mot = "test";
	printf("%s est de longueur %lu\n", mot, strlen(mot));
	printf("mot[1]  : %c\n", mot[1]);
	mot[1] = 'o';
	printf("%s\n", mot);
	return EXIT_SUCCESS;
}
compile mais n'affiche que
test est de longueur 4
mot[1] : e
Pourtant, dans les deux cas, le compilateur crée un tableau de caractères de 4+1(\0) caractères ...