Bonjour,

je teste le fonctionnement de try / catch et throw.

Je suis devant une erreur que je ne comprend pas.

En passant en argument un nombre, le programme imprime la suite des nombre le composant.
Il y a deux compteurs.

L'objectif est de vérifier que l'argument est bien un nombre. Si cela n'est pas le cas, try catch et trhrow prend le relais.
La compilation se passe bien. Mais, j'ai un "segmentation fault" lors des essais.

C'est ce dernier que je ne comprend pas.

Voici mon ecm:
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
48
49
 
#include <stdio.h> // printf
#include <string> // stoi
#include <iostream> // cerr cout
 
using namespace std;
 
// Déclaration des fonctions
int nombreEntier(char *chaine);
 
// Fonction Principale
int main(int argc,char *argv[]){
	int n=0;
	int i=0;
	int compte=1;
	int decompte=0;
 
	try{
		n = nombreEntier(argv[1]);
	}
	catch(string const& err){
		cerr << err << endl;
		return 0;
	}
	decompte=n;
	cout << decompte--;
	while(i < n){
		cout << ',' << compte << ',' ; 
		compte++;
		cout << compte << ',' << decompte << ',';
		decompte--;
		cout << decompte ;
		i=i+4;
	}
	cout << endl;
	printf("%d", n);
}
 
int nombreEntier(char *chaine){
	int y; // indice
	int correct=1;
	while(chaine[y] != '\0'){
		if(chaine[y] < '0' || chaine[y] > '9') correct = 0;
		y++;
	}
	if(correct == 0) throw string("\nUniquement un nombre entier!\n");
	else
		return stoi(chaine);
}
Si quelqu'un a une idée, une piste...

Cordialement