j'ai un probleme bizarre avec mon programme qui lit dans un fichier

j'ai un probleme bizarre avec mon programme qui lit dans un fichier - C++ - Programmation

Marsh Posté le 29-12-2002 à 21:01:21    

En effet, j'ai mis des cout pour voir si mon prog lit bien dans le fichier donc je vois que le programme marche sauf quand je met les cout en commentaire ou que je les enlèves, là j'ai un message d'erreur dans une fenetre qui dis : debug error ! runtime error.
Si je ne met pas les cout, mon programme n'affiche rien.
Cette erreur est -elle normale ? comment la résoudre ?

Reply

Marsh Posté le 29-12-2002 à 21:01:21   

Reply

Marsh Posté le 29-12-2002 à 21:13:26    

en postant ton code

Reply

Marsh Posté le 29-12-2002 à 21:24:58    

Code :
  1. [cpp]#include <stdio.h>
  2.     #include <iostream.h>
  3.     #include <string.h>
  4.     #include <conio.h>
  5.     #define nb_vertices 697
  6. #define nb_faces 1280
  7.     void lecture ()
  8.     {
  9. char tmp [100] ;
  10. char tmp2 [100] ;
  11. int temp [nb_vertices] ;
  12. char chaine [100] ;
  13. char chaine2 [100] ;
  14. float tab_vertices [nb_vertices][3] ;
  15. int tab_sommets [nb_faces][3] ;
  16. char passe_ligne [200] ;
  17. int i ;
  18. FILE *cool ;    //pointeur sur le fichier cool
  19. if ((cool = fopen("cool.ase", "r" )) == NULL)
  20.          return ;
  21. strcpy (chaine , "*MESH_VERTEX" ) ;
  22. strcpy (chaine2 , "*MESH_FACE" ) ;
  23. do
  24.  {
  25.                
  26.  fscanf(cool, "%s", tmp) ;
  27.  }
  28.  while (strcmp (chaine, tmp) != 0) ;
  29.  for (i = 0; i < nb_vertices ;i++)//rempli le tableau avec des coordonnées de vertices
  30. {
  31.  fscanf (cool, "%d%f%f%f%s", &(temp[0]) , &(tab_vertices[i][0]), &(tab_vertices[i][1]), &(tab_vertices[i][2]), tmp) ;
  32.  cout << tab_vertices[i][0]<<" "<< tab_vertices[i][1]<<" "<< tab_vertices[i][2]<<endl ;
  33. }
  34. do
  35.  {
  36.                
  37.  fscanf(cool, "%s", tmp2) ;
  38.  }
  39.  while (strcmp (chaine2, tmp2) != 0) ;
  40. fscanf (cool, "%s%s%d%s%d%s%d", tmp, tmp, &(tab_sommets [0][0]),tmp,
  41.    &(tab_sommets [0][1]),tmp, &(tab_sommets [0][2])) ;
  42. for (i=1 ; i< nb_faces ; i++) //rempli le tableau avec le numero des sommets
  43. {
  44.  fgets (passe_ligne, 200, cool) ; //saute une ligne dans le fichier où les données ne servent pas
  45.  fscanf (cool, "%s%s%s%d%s%d%s%d",tmp, tmp, tmp, &(tab_sommets [i][0]),tmp,
  46.    &(tab_sommets [i][1]),tmp, &(tab_sommets [i][2])) ;
  47.  cout << tab_sommets [i][0]<<" "<<tab_sommets [i][1]<<" "<<tab_sommets [i][2] << endl ;
  48. }
  49.      fclose (cool) ;
  50.    }
  51.    void main (void)
  52.    {
  53.     lecture () ;
  54. getch () ;
  55.    
  56.    }

Reply

Marsh Posté le 29-12-2002 à 21:36:56    

J'ai pas trop lu, mais mélanger iostream et stdio, c'est pas un bonne idee.
J'ai deja eu des pblm.
Choisi en un => utilise printf.
Cela dit c'est peut etre pas ca.
Perso, pour tester si mes routines d'ecriture / lecture marchent, je cree 2 fonction lire / ecrire et je copie un fichier de test.
Si la copie est identique a l'origine, c'est bon signe.


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
Reply

Marsh Posté le 29-12-2002 à 21:43:35    

j'ai mis des printf mais ça marche tjs pas  :(

Reply

Marsh Posté le 29-12-2002 à 22:07:35    

Citation :

fscanf (cool, "%s%s%s%d%s%d%s%d",tmp, tmp, tmp, &(tab_sommets [i][0]),tmp, &(tab_sommets [i][1]),tmp, &(tab_sommets [i][2])) ;


 
C'est mieux ainsi (mais c'est pas la cause de ton probleme :)

Code :
  1. fscanf(cool,
  2.        "%*s%*s%*s%d%*s%d%*s%d",
  3.        &(tab_sommets [i][0]),
  4.        &(tab_sommets [i][1]),
  5.        &(tab_sommets [i][2])) ;


les '*' font ignorer ce parametre.
 
Moi je te conseille d'y aller doucement. Tu lis un float et tu l'affiche. Petit a petit tu lit le suivant ...


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
Reply

Marsh Posté le 29-12-2002 à 22:22:35    

scuse mais je comprend pas bien ce que tu veux que je fasse  :??:  

Reply

Marsh Posté le 29-12-2002 à 23:36:31    

euh a partir du moment ou tu te sers de cout / cin, pkoi tu te fais chier avec les scan/print ?


---------------
Bitcoin, Magical Thinking, and Political Ideology
Reply

Marsh Posté le 29-12-2002 à 23:48:30    

farib a écrit :

euh a partir du moment ou tu te sers de cout / cin, pkoi tu te fais chier avec les scan/print ?


 
pasque là c fscanf et pas scanf, fscanf c pour lire dans un fichier.

Reply

Marsh Posté le 30-12-2002 à 00:41:03    

tu peux lire/ecrire dans des fichiers
 
 
fstream Caca("caca.txt" )
 
Caca << bidule
Caca >> bidula


---------------
Bitcoin, Magical Thinking, and Political Ideology
Reply

Marsh Posté le 30-12-2002 à 00:41:03   

Reply

Marsh Posté le 30-12-2002 à 00:44:54    

airseb a écrit :


 
pasque là c fscanf et pas scanf, fscanf c pour lire dans un fichier.


 
ben tu ouvres des streams en lecture ou en écriture sur ton fichier et tu utilises << et >> comme avec cin ou cout (qui sont des stream ouvert sur l'entrée et la sortie standard respectivement, cerr doit être la sortie d'erreur pendant qu'on y est).

Reply

Marsh Posté le 30-12-2002 à 00:46:03    

j'ai essayer mon programme avec borland c++ au lieu de visual C++ et ça marche !
qu'est-ce qui ne va pas avec visual ?

Reply

Marsh Posté le 30-12-2002 à 01:24:30    

airseb a écrit :

j'ai essayer mon programme avec borland c++ au lieu de visual C++ et ça marche !
qu'est-ce qui ne va pas avec visual ?


 
Le problème se situe dans ton programe, pas dans ta biliothèque de classes, Borland semble accepter des choses que la norme ne l'oblige pas a accepter.
 
Vire tous tes fopen, fscanf, fmachins et utilises de streams partout. Ou alors ne prétends pas faire du C++. En plus tu utilises des tableaux n'importe comment.


Message édité par nraynaud le 30-12-2002 à 01:25:06
Reply

Marsh Posté le 30-12-2002 à 05:04:35    

Sous Visual C++ 6, <iostream.h> se lie à une ancienne librairie, c'est peut-être là ton problème.
 
Choisis d'abord si tu fais du C ou du C++.
Si tu gardes C++, utilise:

Code :
  1. #include <iostream>
  2. using namespace std;


Message édité par Musaran le 31-12-2002 à 05:36:56

---------------
Bricocheap: Montage de ventilo sur paté de mastic silicone
Reply

Marsh Posté le 30-12-2002 à 13:08:44    

j'ai envie de faire venir Taz@PPC sur ce topic  :whistle:  :whistle:


---------------
Bitcoin, Magical Thinking, and Political Ideology
Reply

Sujets relatifs:

Leave a Replay

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