J'appelle la fonction fournie par Chris Conway (How do you reverse a string in place in C or C++?) de la main (code C). Quand j'exécute ce programme en utilisant cygwin, le programme se bloque quand il est dans la boucle while (commente les lignes où il se casse). Pourriez-vous s'il vous plaît expliquer ce qui ne va pas ici? MerciC: inverser une chaîne en place. J'ai utilisé le prog répondu dans une question précédente. Il compile ok mais se bloque avec faute de segmentation
#include <stdio.h>
#include <string.h>
void strrev(char* z);
int main()
{
char *a;
printf("before reverse: %s\n", a);
strrev(a); // function provided by Chris Conway
printf("after reverse: %s\n", a);
return 0;
}
void strrev(char *str) {
char temp, *end_ptr;
/* If str is NULL or empty, do nothing */
if(str == NULL || !(*str))
return;
end_ptr = str + strlen(str) - 1;
/* Swap the chars */
while(end_ptr > str) {
temp = *str;
*str = *end_ptr; //crashes here (cygwin gives segmentation fault)
*end_ptr = temp; //for testing, if I comment out line above, it crashes here
str++;
end_ptr--;
}
}
Vous auriez vraiment dû mettre à jour le question originale. – EBGreen
@ EBreen, je crois que c'est une question sans rapport (un peu), et il mérite son propre poste. – strager
Je m'assurerai de faire ça la prochaine fois. Merci. –