Bonjour,
ça fait un p'tit bout de temps que je cherche la solution à mon problème, sans succès. Du coup j'en viens à vous, si quelqu'un pourrait m'aider SVP.
Donc voici l'exercice :
Écrivez une fonction developper(s1, s2) qui lorsqu'elle rencontre des abréviations comme a-z dans la chaîne s1, les écrit sous leur forme développée abc...xyz dans s2. La fonction devra traiter des lettres majuscules ou minuscules et des chiffres. Prévoyez des cas comme a-b-c, a-z0-9 et -a-z et faites en sorte que les - qui figurent au début ou à la fin soient copiés tels quels.
Mon code :
#include <stdio.h>
#define MAXCHAR 100
void developper (char s1[], char s2[]);
int main () {
char s1[MAXCHAR] = "a-b-c a-z0-9 -a-z";
char s2[MAXCHAR];
developper (s1, s2);
printf ("%s\n%s\n", s1, s2);
return 0;
}
void developper (char s1[], char s2[]) {
int i, j;
for (i=j=0; s1[i]!=EOF; i++) {
if (s1[i] == '-' && (s1[i-1] != ' ' && s1[i+1] != ' ') ) {
do {
s2[j++] = (s2[j-1]+1);
} while (s2[j] > s1[i+1]);
}
else
s2[j++] = s1[i];
}
}
Le résultat en sortie :
[khelil@archvm:C]$ ./developper
a-b-c a-z0-9 -a-z
a
[khelil@archvm:C]$ ./developper
Erreur de segmentation (core dumped)
[khelil@archvm:C]$
(en gros, le resultat est assez random ... why ?)
Quelqu'un saurait me dire d'où vient l'erreur ?
Message édité le 23 septembre 2016 à 18:46:40 par -erezan-