plantage lors de l'exécution (un seul cas de figure)

plantage lors de l'exécution (un seul cas de figure) - C++ - Programmation

Marsh Posté le 10-04-2006 à 15:54:20    

J'ai un vieux probleme de derriere les fagots avec ce code :
 

Code :
  1. #include <vector>
  2. #include <iomanip>
  3. #include <utility>
  4. #include <time.h>
  5. #include "classes.h"
  6. using namespace std;
  7. int main(int argc, char *argv[])
  8. {
  9. std::vector< std::pair<int,string> > tab_c;
  10. //                              DECLARATIONS                             //
  11. Fichier_analyse F1;
  12. Fichier_analyse F2;
  13. if(!argv[1]){cout << "fichier non rentre" << endl;system("pause" );exit(0);}
  14. if(!argv[2]){cout << "Deuxieme fichier non rentre" << endl;system("pause" );exit(0);}
  15. if(!argv[3]){cout << "Fichier Sortie non rentre" << endl;system("pause" );exit(0);}
  16. string fichier_sortie = argv[3];
  17. std::ifstream fichier( argv[3] );
  18. if(fichier){char reponse = 'a';
  19.             while((reponse != 'o')&&(reponse != 'n')){
  20.       cout << endl <<"Fichier de sortie deja present, voulez vous ecraser ? (o/n)" << endl;
  21.       cin >> reponse;
  22.       }
  23.    if(reponse == 'o'){
  24.         std::ofstream fichier2( argv[3], ios_base::trunc);
  25.         fichier2.close();
  26.         //ecrasement
  27.         }
  28.             if(reponse == 'n'){cout << endl <<"Veuillez entrer le nouveau nom (sans extension): " << endl;
  29.                      string reponse2;
  30.          cin >> reponse2;
  31.          fichier_sortie = reponse2 + ".txt";}
  32.          }
  33.            
  34. int tailleBuf1 = F1.setBuffer(argv[1]);
  35. int tailleBuf2 = F2.setBuffer(argv[2]);
  36. int index = 1;
  37. SDU trame_SDU;
  38. int errpar=0;
  39. //std::vector<int> ent_mux;ent_mux.resize(16);
  40. std::vector<int> ent_mux;ent_mux.resize(16);
  41. //-----------------------------------------------------------------------//
  42. int num = 1;
  43. vector<int> resultat_test_trame;resultat_test_trame.resize(3);
  44. while(index!=F1.get_fin_fichier()){
  45.          
  46. string SDU_temp = F1.getSDU(index);
  47. trame_SDU.set_SDU(SDU_temp);
  48. int index_PDU = 1;
  49. bool val = trame_SDU.trame_avec_PDU(SDU_temp);
  50. if(val == 1){int temp_PDU = index_PDU-1;
  51. while(index_PDU != 0){
  52. PDU trame_PDU;
  53. //                                  LA PDU A TRAITER                              //
  54. //--------------------------------------------------------------------------------//
  55. string trame_atraiter = trame_SDU.getPDU(temp_PDU);
  56. trame_PDU.set_PDU(trame_atraiter);
  57. //--------------------------------------------------------------------------------//
  58. trame_PDU.traiter_trame_PDU(trame_atraiter,errpar, ent_mux, index_PDU, index, temp_PDU, fichier_sortie);
  59. std::vector<int> resultat = trame_PDU.calc_MCMPLP(trame_atraiter, errpar, ent_mux);
  60. }
  61. //TAG : IL PLANTE ICI ET REFUSE DE RENTRER DANS L'AUTRE BOUCLE !!!!!
  62. }
  63. else{
  64.  string SDU_temp = F1.getSDU(index);
  65.  PDU trame_PDU;
  66. //                            LA SDU A TRAITER (SANS PDU)                         //
  67. //--------------------------------------------------------------------------------//
  68.  trame_PDU.set_PDU(SDU_temp);
  69. //--------------------------------------------------------------------------------//
  70.  trame_PDU.traiter_trame_SDU(errpar, ent_mux, index_PDU, index, fichier_sortie);
  71. }
  72. }//fin while fin de fichier
  73. cout << endl << "Fin Fichier 1" << endl;
  74. errpar = 0;
  75. index = 1;
  76. //--------------------------------------------------------------------------------//
  77. //                                  FICHIER 2                                     //
  78. //--------------------------------------------------------------------------------//
  79. while(index!=F2.get_fin_fichier()){
  80. int num = 2;
  81. string SDU_temp = F2.getSDU(index);
  82. trame_SDU.set_SDU(SDU_temp);
  83. int index_PDU = 1;
  84. bool val = trame_SDU.trame_avec_PDU(SDU_temp);
  85. if(val == 1){int temp_PDU = index_PDU-1;
  86. while(index_PDU != 0){
  87. PDU trame_PDU;
  88. //                                  LA PDU A TRAITER                              //
  89. //--------------------------------------------------------------------------------//
  90. string trame_atraiter = trame_SDU.getPDU(temp_PDU);
  91. trame_PDU.set_PDU(trame_atraiter);
  92. //--------------------------------------------------------------------------------//
  93. trame_PDU.traiter_trame_PDU(trame_atraiter,errpar, ent_mux, index_PDU, index, temp_PDU, fichier_sortie);
  94. std::vector<int> resultat = trame_PDU.calc_MCMPLP(trame_atraiter, errpar, ent_mux);
  95. }}
  96. else{
  97.  PDU trame_PDU;
  98. //                            LA SDU A TRAITER (SANS PDU)                         //
  99. //--------------------------------------------------------------------------------//
  100.  trame_PDU.set_PDU(SDU_temp);
  101. //--------------------------------------------------------------------------------//
  102.  trame_PDU.traiter_trame_SDU(errpar, ent_mux, index_PDU, index, fichier_sortie);
  103. }
  104. }//fin while fin de fichier
  105. cout << "Fin Fichier 2" << endl;


 
le fichier se compile nickel et s'execute également bien
 
par contre lorsque le fichier de sortie existe déjà (debut de code) et que j'en rentre un nouveau, il créé bien le fichier mais il plante au niveau du tag que j'ai indiqué dans le code.
 
Pourquoi le seul fait que je créée un fichier de rien ou que j'en efface un puis en refasse un autre fait tout planter ?
 
Note : a un moment, c'était le contraire qui plantait : lorsque je créais un fichier alors qu'il n'y en avait pas, cela plantait, et lorsque je demandais l'écrasement du fichier ca marchait ...
C'est quoi ce binz ?

Reply

Marsh Posté le 10-04-2006 à 15:54:20   

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed