Voici la manière dont je peux afficher la chaîne "dcba":Pourquoi je peux inverser une chaîne en transmettant une variable sans passer une vraie chaîne? (Code simple)
main()
{
char s[10] = "abcd";
puts(strrev(s));
}
La façon dont je reçois un "Segmentation Fault" (pourquoi?):
puts(strrev("abcd"));
Et ici est la fonction qui inverse la chaîne:
char *strrev(char *s)
{
int i, j;
char aux;
for(i=0, j=strlen(s)-1; i<j; i++, j--)
{
aux = s[j];
s[j] = s[i];
s[i] = aux;
}
return s;
}
Un littéral de chaîne est constant. – limits
Attention, @overtheboard. Bien qu'il soit sage de traiter les littéraux comme s'ils étaient constants, ce mot a une signification spécifique dans la norme. Ils ne sont pas * requis * pour être immuables et, en fait, la phase 6 crée un tableau de 'char' plutôt que' const char'. Je suis sûr que vous vouliez dire le premier mais je me sens mal à l'aise pédant aujourd'hui :-) – paxdiablo
Ce code fonctionne pour moi .. – Twinkle