J'essaie d'apprendre les principes fondamentaux de C, mais je n'arrive pas à comprendre pourquoi ce code ne fonctionne pas. La boucle while de reverse() provoque une erreur de bus. J'ai trouvé le code presque identique dans un livre d'entrevue de programmation comme une solution valide, mais ni cette méthode ni d'autres méthodes similaires que j'ai vu posté ici ne fonctionnent pour moi sans une erreur de bus.In-Place String Inverser en C
#include <stdio.h>
void reverse(char* str) {
char* end = str;
char tmp = 0;
if(str) {
while(*end) {
end++;
}
--end;
while(end>str) {
tmp = *end;
*end-- = *str;
*str++ = tmp;
}
}
}
int main() {
char* a = "12";
puts(a);
reverse(a);
puts(a);
return 0;
}
Voir http://stackoverflow.com/questions/4493139/are-string-literals-const et beaucoup d'autres questions (comme au moins une fois par semaine) sur le SO. – ephemient