[C] j'ai un probleme pour écrire dans un fichier

j'ai un probleme pour écrire dans un fichier [C] - C++ - Programmation

Marsh Posté le 05-05-2003 à 10:56:51    

je n'ai pas d'erreurs a la compilation mais j'en ai a l'execution au moment où le programme doit écrire dans le fichier, là j'ai un "access violation".
Je n'ai pas le message "voulez vous refaire un choix"
savez vous d'où vient l'erreur ?(mis a part que c du C et C++ mélangé)
voici le code :

Code :
  1. #include <iostream.h>
  2. #include <stdio.h>
  3. #include <conio.h>
  4. //#include <fstream.h>
  5. struct donnees_voiture
  6. {
  7. char marque[50] ;
  8.    char type [50];
  9.    char immatriculation[50];
  10.    int nb_chevaux ;
  11.    char energie[25] ;
  12.    char date_de_mise_en_circulation[10] ;
  13.    int consommation_au_litre ;
  14.    char nom_utilisateur[50];
  15.    char prenom_utilisateur[50];
  16.    char date_de_possession[20] ;
  17.    int nb_km_parcourus ;
  18.    char date_proch_controle_technic[20];
  19.    int kilometrage_actuel ;
  20.    float prix_L ;
  21.    char date_fact[20] ;
  22.    float montant_fact ;
  23. };
  24. int i=0 ;
  25. FILE *fichier ;
  26. void fact_essence_diesel ()
  27. {
  28.    donnees_voiture fact1[10] ;
  29. cout<<"veuillez saisir la marque du vehicule puis son type,";
  30.    cin>>fact1[i].marque>>fact1[i].type ;
  31.    cout<<"son n°d'immatriculation, son nombre de chevaux, son energie, ";
  32.    cin>>fact1[i].immatriculation>>fact1[i].nb_chevaux>>fact1[i].energie ;
  33.    cout<<"sa date de mise en circulation, sa consommation en litre ";
  34.    cin>>fact1[i].date_de_mise_en_circulation>>fact1[i].consommation_au_litre;
  35.    cout<<"le nom de l'utilisateur, puis son prenom, la date de possession du vehicule,";
  36.    cin>>fact1[i].nom_utilisateur>> fact1[i].prenom_utilisateur>>fact1[i].date_de_possession;
  37.    cout<<"le nombre de km qu'il a parcouru, la date du prochain controle technique,";
  38.    cin>>fact1[i].nb_km_parcourus>>fact1[i].date_proch_controle_technic;
  39.    cout<<" le kilometrage actuel du véhicule, ";
  40.    cin>>fact1[i].kilometrage_actuel;
  41.    cout<<"le prix du litre, la date de la facture"<<endl ;
  42.    cin >>fact1[i].prix_L>>fact1[i].date_fact;
  43.    fact1[i].montant_fact=(fact1[i].kilometrage_actuel-fact1[i].nb_km_parcourus)*
  44.           fact1[i].prix_L ;
  45.    cout<<"le montant de la facture est de "<< fact1[i].montant_fact<<endl ;
  46.    fprintf(fichier, "%s%s%s%d%s%s%d%s%s%s%d%s%d%f%s%f",fact1[i].marque,
  47.       fact1[i].type, fact1[i].immatriculation, fact1[i].nb_chevaux,
  48.             fact1[i].energie, fact1[i].date_de_mise_en_circulation,
  49.             fact1[i].consommation_au_litre, fact1[i].nom_utilisateur,
  50.             fact1[i].prenom_utilisateur, fact1[i].date_de_possession,
  51.             fact1[i].nb_km_parcourus, fact1[i].date_proch_controle_technic,
  52.             fact1[i].kilometrage_actuel, fact1[i].prix_L, fact1[i].date_fact,
  53.             fact1[i].montant_fact);
  54.    i++ ;
  55. }
  56. void main ()
  57. {
  58. char reponse ;
  59.    int j=0 ;
  60.    int choix ;
  61.    fichier=fopen("c:\fichier1.dat","w" );
  62.    //ofstream fichier ("c:\fichier1.dat" ) ;
  63. do
  64. {
  65.  cout<<"menu général"<<endl ;
  66.     cout<<"1)Saisie d'une facture d'essence ou de diesel"<<endl ;
  67.     cout<<"2)Saisie d'une facture de garage "<<endl ;
  68.     cout<<"3)Bilan d'un véhicule "<<endl ;
  69.     cout<<"autre)Quitter "<<endl ;
  70.     cin>>choix ;
  71.     switch (choix)
  72.     {
  73.      case 1 : fact_essence_diesel ();
  74.           break ;
  75.        case 2 : //fact_garage ();
  76.           break ;
  77.   case 3 : //bilan ()
  78.           break ;
  79.        default : return ;
  80.     }
  81.       if (j==10)
  82.      {
  83.        reponse='n';
  84.      }
  85.      else
  86.      {
  87.        cout<<"voulez vous refaire un choix (o/n)"<<endl ;
  88.        cin>>reponse ;
  89.          j++ ;
  90.      }
  91.     }
  92.     while (reponse == 'o');
  93.     fclose (fichier) ;
  94.     getch () ;
  95. }


Message édité par airseb le 05-05-2003 à 10:57:25
Reply

Marsh Posté le 05-05-2003 à 10:56:51   

Reply

Marsh Posté le 05-05-2003 à 10:58:52    

houla
heuh bon, deja si taz passe t bon pour te faire sonner les cloches [:ddr555]
 
 
ensuite fodra que t'apprennes a te servir d'un debuggueur histoire de voir ou ca plante (la perso g pas envie d'eplucher ton code...)
 
edit :
ah tiens [:dawa]
fichier=fopen("c:\fichier1.dat","w" );
fo deux \\ :p
fo tester ses pointeurs mon petit :O


Message édité par chrisbk le 05-05-2003 à 10:59:56
Reply

Marsh Posté le 05-05-2003 à 11:00:56    

EDIT : bon ba grillaid par chris :D


Message édité par Taiche le 05-05-2003 à 11:01:47

---------------
Everyone thinks of changing the world, but no one thinks of changing himself  |  It is the peculiar quality of a fool to perceive the faults of others and to forget his own  |  Early clumsiness is not a verdict, it’s an essential ingredient.
Reply

Marsh Posté le 05-05-2003 à 11:01:48    

Taiche a écrit :

Bin moi j'dirais que c'est normal que ça pète vu que ton FILE* tu les déclares mais tu l'initialises pas... :sarcastic:  


 
chichi : fichier=fopen("c:\fichier1.dat","w" );
 

Reply

Marsh Posté le 05-05-2003 à 11:02:29    

place des bouchons (affiche ce que tu veux a l'ecran, ou fais des MessageBox) pour voir exactement ou ca plante (ton bouchon s'affiche => l'erreur est apres le bouchon, il ne s'affiche pas => l'erreur est avant le bouchon.....

Reply

Marsh Posté le 05-05-2003 à 11:04:57    

chrisbk a écrit :

houla
heuh bon, deja si taz passe t bon pour te faire sonner les cloches [:ddr555]
 
 
ensuite fodra que t'apprennes a te servir d'un debuggueur histoire de voir ou ca plante (la perso g pas envie d'eplucher ton code...)
 
edit :
ah tiens [:dawa]
fichier=fopen("c:\fichier1.dat","w" );
fo deux \\ :p
fo tester ses pointeurs mon petit :O


 
merci  :D

Reply

Marsh Posté le 05-05-2003 à 11:17:16    

vive le C les mecs

Reply

Marsh Posté le 05-05-2003 à 11:39:27    

++Taz a écrit :

vive le C les mecs


 
merde, ca y est, il est la ! :D
 
 
:P
:D


---------------
last.fm
Reply

Marsh Posté le 05-05-2003 à 13:20:37    

ben c pour vous. les des grands apports de c++, c'est sa bibliotheque de/sn ultra-simple. apres ça, vous persévérer à utilser stdio et vous vous etonnez d'avoir des problèmes

Reply

Sujets relatifs:

Leave a Replay

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