c'est sûr, ici on voit l'utilisation de buffer qui peuvent être débordés par exemple.
j'écrirais la fonction suivante :
void rev_string (char *str)
{
char *beg, *end, *p, tmp;
beg = str;
while (*beg != '0円') {
while (!isalpha(*beg) && *beg != '0円')
beg++;
end = beg;
while (isalpha(*end))
end++;
p = end - 1;
while (p-beg > 0) {
tmp = *beg;
*beg = *p;
*p = tmp;
beg++;
p--;
}
beg = end;
}
puts(str);
}
j'ai testé ce code mais il segfault incompréhensiblement : en effet, en l'exécutant via gdb, il ne segfault pas ? je comprends pas...
Si quelqu'un pouvait m'éclairer un peu sur ce comportement, je lui en remercierait par avance :)
[^] # Re: eviv Bulgroz !!!
Posté par kd . En réponse au journal eviv Bulgroz !!!. Évalué à 1.
void rev_string (char *str) { char *beg, *end, *p, tmp; beg = str; while (*beg != '0円') { while (!isalpha(*beg) && *beg != '0円') beg++; end = beg; while (isalpha(*end)) end++; p = end - 1; while (p-beg > 0) { tmp = *beg; *beg = *p; *p = tmp; beg++; p--; } beg = end; } puts(str); }j'ai testé ce code mais il segfault incompréhensiblement : en effet, en l'exécutant via gdb, il ne segfault pas ? je comprends pas... Si quelqu'un pouvait m'éclairer un peu sur ce comportement, je lui en remercierait par avance :)