J'essaie d'inverser une chaîne terminée par un caractère nul en place dans C++. J'ai écrit le code ci-dessous:Essayer d'inverser une chaîne en place
//Implement a function to reverse a null terminated string
#include<iostream>
#include<cstdlib>
using namespace std;
void reverseString(char *str)
{
int length=0;
char *end = str;
while(*end != '\0')
{
length++;
end++;
}
cout<<"length : "<<length<<endl;
end--;
while(str < end)
{
char temp = *str;
*str++ = *end;
*end-- = temp;
}
}
int main(void)
{
char *str = "hello world";
reverseString(str);
cout<<"Reversed string : "<<str<<endl;
}
Cependant, quand je lance ce programme C++, je reçois aa violation d'accès en écriture à l'intérieur de la boucle while à la déclaration: *str = *end ;
Même si cela est assez simple, je n'arrive pas à comprendre la raison exacte pour laquelle je reçois cette erreur.
Pourriez-vous s'il vous plaît m'a aider à identifier l'erreur?
merci beaucoup! est venu à connaître une nouvelle chose! –