Cela semble être facile, mais j'ai passé beaucoup trop de temps dessus. J'espère que quelqu'un peut aider.Modification du contenu dans un tableau de pointeurs de caractères
char *string_labels[5] = { "one", "two", "three", "four", "five" };
void myFunction(void)
{
//can print them just like expected
for(i=0; i < 5; i++)
{
printf("%s\n", string_labels[i]);
}
//how can i change the contents of one of the elements??
sprintf(string_labels[0], "xxx"); <-crashes
}
Vous ne pouvez pas - ils sont const. –
est donc cette déclaration la même que const char * string_labels = {"un", "deux", "trois", "quatre", "cinq"}; ? Je pensais que si elle n'était pas déclarée const, elle serait modifiable? Pouvez-vous expliquer pourquoi? Merci d'avoir aidé –
Oui, les littéraux de chaîne sont effectivement const, même s'ils ne sont pas déclarés comme tels. Typiquement, ils résident dans un segment en lecture seule. –