Bonjour
j'ai le code suivant qui compile bien sous Linux et mac,
or lors de l'execution sous mac j'ai l'erreur :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45 #include <stdio.h> #include <string.h> #include <stdlib.h> #define TAILLE_CHAINE 27 #define TAILLE_SOUS_CHAINE 26 void decalage(const char chaine[TAILLE_CHAINE], int iteration, char chaineDeRetour[TAILLE_CHAINE]) { char a[TAILLE_SOUS_CHAINE]; char chaineCpy[TAILLE_CHAINE]; if(iteration > 0) { strncpy(a,chaine,TAILLE_SOUS_CHAINE-1); sprintf(chaineCpy,"%c%s",chaine[TAILLE_SOUS_CHAINE-1],a); decalage(chaineCpy, iteration-1,chaineDeRetour); } else { strncpy(chaineDeRetour, chaine, TAILLE_CHAINE-1); } } int main(void) { printf("start"); char chaine[TAILLE_CHAINE] = "ABCDEFGHIJKLMNOPQRSTUVWXYZ\0"; char chaineN[TAILLE_CHAINE] = ""; printf("chaine = %s\n", chaine); decalage(chaine,1,chaineN); printf("1 chaineN = %s\n", chaineN); decalage(chaine,2,chaineN); printf("2 chaineN = %s\n", chaineN); decalage(chaine,10,chaineN); printf("10 chaineN = %s\n", chaineN); decalage(chaine,26,chaineN); printf("26 chaineN = %s\n", chaineN); return 0; }
startchaine = ABCDEFGHIJKLMNOPQRSTUVWXYZ
1 chaineN = ZABCDEFGHIJKLMNOPQRSTUVWXY
Abort trap: 6
mais si le code est:
le retour est correct:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47 #include <stdio.h> #include <string.h> #include <stdlib.h> #define TAILLE_CHAINE 27 #define TAILLE_SOUS_CHAINE 26 void decalage(const char chaine[TAILLE_CHAINE], int iteration, char chaineDeRetour[TAILLE_CHAINE]) { char a[TAILLE_SOUS_CHAINE]; char chaineCpy[TAILLE_CHAINE]; if(iteration > 0) { strncpy(a,chaine,TAILLE_SOUS_CHAINE-1); sprintf(chaineCpy,"%c%s",chaine[TAILLE_SOUS_CHAINE-1],a); decalage(chaineCpy, iteration-1,chaineDeRetour); } else { printf("."); strncpy(chaineDeRetour, chaine, TAILLE_CHAINE-1); } } int main(void) { printf("start"); char chaine[TAILLE_CHAINE] = "ABCDEFGHIJKLMNOPQRSTUVWXYZ\0"; char chaineN[TAILLE_CHAINE] = ""; printf("chaine = %s\n", chaine); decalage(chaine,1,chaineN); printf("1 chaineN = %s\n", chaineN); decalage(chaine,2,chaineN); printf("2 chaineN = %s\n", chaineN); decalage(chaine,10,chaineN); printf("10 chaineN = %s\n", chaineN); decalage(chaine,26,chaineN); printf("26 chaineN = %s\n", chaineN); return 0; }
startchaine = ABCDEFGHIJKLMNOPQRSTUVWXYZ
.1 chaineN = ZABCDEFGHIJKLMNOPQRSTUVWXY
..2 chaineN = YZABCDEFGHIJKLMNOPQRSTUVWX
..........10 chaineN = QRSTUVWXYZABCDEFGHIJKLMNOP
..........................26 chaineN = ABCDEFGHIJKLMNOPQRSTUVWXYZ
pourquoi?
merci bien
Partager