Voici ma question:inverse un tableau pointeur
écrire une fonction void reverse (char s []) qui inverse une chaîne de caractères. Par exemple, "Harry" devient "yrraH".
Et voici mon code:
void reverse(char s[]);
int main()
{
char s [] = "Harry";
reverse(s);
cout << s << endl;
system("PAUSE");
return 0;
}
void reverse(char s[])
{
int length = strlen(s);
int c, i ,j;
for(int i=0, j=length-1 ; i<j ; i++, j--)
{
c = s[i];
s[i] = s[j];
s[j] = c;
}
}
Il fonctionne parfaitement pour inverser la chaîne. Cependant, on m'a demandé de le faire en pointeur. Donc, à partir de ce que j'ai pensé, j'attribue d'abord un pointeur p pour obtenir le premier caractère en chaîne. Puis j'attribue un pointeur q pour obtenir le dernier caractère de la chaîne. La boucle I à travers pour inverser le tableau. Mais quand j'ai essayé de faire ceci pour obtenir le dernier char:
char *q = strlen(s-1);
J'ai eu une erreur. Quelqu'un peut-il m'aider à résoudre ce problème en utilisant le pointeur?
partie Mise à jour
if (strlen(s) > 0(
{
char* first = &s[0];
char*last = &s[strlen(s)-1];
while(first < last)
{
char temp = *first;
*first = *last;
*last = temp;
++first;
--last;
}
}
Est-ce que ce travail est fait? – nil
Que signifie "On m'a demandé de le faire en pointeur"? Vous pourriez juste remplacer 'char []' par 'char *'. – juanchopanza
Ya mais j'ai essayé. Je n'ai pas simplement posé la question ici sans solution. Il y a une erreur quand j'essaye de compter la longueur et l'assigner au pointeur. – Yvonne