Erreur stackoverflowexception

Fermé
geeklife57 Messages postés 3 Date d'inscription samedi 9 novembre 2013 Statut Membre Dernière intervention 27 mars 2014 - 27 mars 2014 à 19:28
Viking57 Messages postés 68 Date d'inscription jeudi 21 février 2013 Statut Membre Dernière intervention 28 juillet 2014 - 31 mars 2014 à 13:49
Bonjour,

je suis débutant en c++

j'ai deux questions...
tout d'abord j'ai un fichier .cvs avec des données de la formes Nom;Nombre;chiffre et j'aimerai les placer dans un tableau a dimension : tableau[1][0]=Nombre ; tableau[1][1]=chiffre ainsi de suite (il y a 300 lignes). (je laisse tomber le Nom). j'ai utilisé une méthode mais qui me semble pas super génial...
ensuite, quand je veux compiler mon code, je tombe sur le message d'erreur "stackoverflowexception", mais je ne sais pas d'ou vient ce message ni quoi faire pour l'arranger... si vous pouviez m'aider!

voila mon code (il manque deux trois trucs mais c'est l'essentiel)

// test.cpp : fichier projet principal.

#include "stdafx.h"

using namespace System;

#define _CRT_SECURE_NO_DEPRECATE
#include <iostream>
#include <fstream>
#include <string>
#include <cstdio>
#include <stdio.h>
[STAThreadAttribute]

int lecture();
void LectureTableau(int a);
int tableau[300][2];
int main(array<System::String ^> ^args)
{
using namespace std;
int a,b,c,d;
char nom[50];
FILE * liste2;
cout << "definition du jour" << endl << "Lundi : 1 \n Mardi : 2 \n Mercredi : 3 \n Jeudi : 4 \n Vendredi : 5 \n Samedi : 6 \n Dimanche : 7 \n\n";
cout << "entrer le jour :";
cin >> c;

ifstream liste1("D:/Users/agrofoglio/Documents/Classeur1.csv", ios::in);
if(liste1)
{
string ligne;
b=0;
liste2= fopen ("D:/Users/agrofoglio/Documents/Classeur1.csv","rt");
while(getline(liste1,ligne))
{
fscanf_s(liste2, "%s%lf%d", &nom, &c, &d);
tableau[b][1]=c;
tableau[b][2]=d;
b++;
}
fclose (liste2);
}
else
cerr << "impossible d'ouvrir le fichier" << endl;
boucle:
a=lecture();
cout << "continuer\? \n Y:1-N:0 \?";
cin >> d;
if(d==1)
;
else
goto boucle;
LectureTableau(a);
cout << "Continuer\? \n Y:1-N:0 \?";
cin >> d;
if(d==1)
goto boucle;
else
{
cout << "Au revoir";
}

liste1.close();

return 0;
}

int lecture()
{
int a;
std::cout << "numero de la carte : " ;
std::cin >> a ;
return a ;
}

void LectureTableau(int a)
{
int b;
b=0;
while (a!=tableau[b][1])
{
b++;
}
if ( tableau[b][2]==0)
{
std::cout << "Oui\n"<<tableau[b][0];
tableau[b][2]=1;
}
else
std::cout << "Non";
}

Merci de votre aide!!

Geeklife57

ps, mon compilateur est "visual studio c++ 2010"

1 réponse

Viking57 Messages postés 68 Date d'inscription jeudi 21 février 2013 Statut Membre Dernière intervention 28 juillet 2014 5
31 mars 2014 à 13:49
Bonjour, un peu le bordel je dois avouer. Première chose : pourquoi utiliser des GOTO ?
Seconde chose : es tu certain de lire le fichier et pas au delà?
Troisième chose : L'erreur stack overflow (https://docs.microsoft.com/fr-fr/dotnet/api/system.stackoverflowexception?redirectedfrom=MSDN&view=netframework-4.8 pile d'exécution dépassé donc trop d'appel (peut être une boucle infinie)
0