Programmation en C

waloo92i Messages postés 4 Date d'inscription lundi 11 juin 2007 Statut Membre Dernière intervention 12 mai 2008 - 9 mai 2008 à 15:10
waloo92i Messages postés 4 Date d'inscription lundi 11 juin 2007 Statut Membre Dernière intervention 12 mai 2008 - 12 mai 2008 à 01:49
je ne sais pas comment procéder pour faire sa :

Il s'agit dans un premier temps de créer un fichier à partir du clavier ou chaque enregistrement est formé d'un nom et d'un solde, puis charger ce fichier en mémoire centrale pour le trier par ordre alphabétique avant d'écraser ce fichier avec le fichier trié.
Puis dans un deuxiéme temps il faut prévoir la modification du solde directement sur le fichier trié.

6 réponses

BastienL21 Messages postés 172 Date d'inscription dimanche 10 décembre 2000 Statut Membre Dernière intervention 12 février 2009 2
9 mai 2008 à 18:06
Bonjour,
Si je comprends bien, tu voudrais créer un fichier texte dans lequel tu voudrais écrire un nom et un solde ?

si oui, voila qui pourrais peut-être t'aider :

//METTRE 2 \ pour la direction :
    fichier = fopen("C:\\RESTEDUCHEMIN\\MonFichier.txt", "a");
//si il est bien ouvert
        if (fichier != NULL)
    {
    fscanf(fichier,"%s", &VariableAInsérer);
    fclose(fichier);
    }
//si non
            if(fichier == NULL)
    {
    printf("Erreur lors de l'ouverture");
    }

Cordialement,[Insert_Emoticon%28%27/imgs2/smile.gif%27%29; ]
             Bastien
 
0
BastienL21 Messages postés 172 Date d'inscription dimanche 10 décembre 2000 Statut Membre Dernière intervention 12 février 2009 2
9 mai 2008 à 18:08
ERREUR LORS DU PRECEDANT MESSAGE
-->voir ligne du code en rouge



//METTRE 2 \ pour la direction :
    fichier = fopen("C:\\RESTEDUCHEMIN\\MonFichier.txt", "a");
//si il est bien ouvert
        if (fichier != NULL)
    {
    fprintf(fichier,"%s", &VariableAInsérer);
    fclose(fichier);
    }
//si non
            if(fichier == NULL)
    {
    printf("Erreur lors de l'ouverture");
    }
//Désolé

Cordialement,[Insert_Emoticon%28%27/imgs2/smile.gif%27%29; ]
             Bastien
 
0
waloo92i Messages postés 4 Date d'inscription lundi 11 juin 2007 Statut Membre Dernière intervention 12 mai 2008
9 mai 2008 à 20:52
je pense que c'est un plus compliqué que sa voila ce que j'ai fait dite moi ce que vous en pensé mais il reste des warnings que je n'arrive pas a résoudre :

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct Tree {
       char nom[32];
       char number[32];
       struct tree * left;
       struct tree * right;
       }* root;
       
       void addItem(struct Tree *root, struct Tree *Parain, int bDir, struct Tree *Item)
       {
            if (root)
            {
                     if(strcmp(root->nom, Item->nom)<0)
                     {
                           addItem(root->left, root, 0, Item);
                     }
                     else
                       if (strcmp(root->nom, Item->nom)>0)
                       {
                           addItem(root->right, root, 1, Item);
                       }
                       else
                         if (strcmp(root->number, Item->number)<0)
                         {
                            addItem(root->left, root, 0, Item);
                         }
                         else
                         {
                             addItem(root->right, root, 1, Item);
                         }
            }
            else
            { 
                if (bDir)
                    Parain->right=Item;
                    else
                    Parain->left=Item;
            }
        }
        
        
        int fCreerArbre (FILE* file)
        {
            char sBuf[128];
            struct Tree * Item;
            
            while (fgets(sBuf, 128, file))
            {
                  Item=(struct Tree*)malloc(sizeof(struct Tree));
                  sscanf(sBuf, "%s[31] %s[31]", Item->nom, Item->number);
                  Item->left=NULL;
                  Item->right=NULL;
                  if (root)
                  addItem(root, root, 0, Item);
                  else
                  root=Item;
                  }
            }
           
            int fparcoursArbre(FILE *file, struct Tree *root)
            {
                if(root)
                {
                        fparcoursArbre(file, root->left);
                        fprintf(file, "%s %s \r\n", root->nom, root->number);
                        fparcoursArbre(file, root->right);
                }
            }
             
      int main (int nargs, char ** args)
      {
          char * sInputFile;
          char * sOutputFile;
          FILE * fInputFile;
          FILE * fOutputFile;
          
          sInputFile=(char *)malloc(strlen(args[1])*sizeof(char)+1);
          strcpy(sInputFile, args[1]);
          sInputFile [strlen(args[1])];
          
          sOutputFile=(char *)malloc(strlen(args[1])*sizeof(char)+1);
          strcpy(sOutputFile, args[1]);
          sOutputFile [strlen(args[1])];
          
          fInputFile=fopen(sInputFile, "r+");
          fOutputFile=fopen(sOutputFile, "w+");
          
          fCreerArbre(fInputFile);
          fparcoursArbre(fOutputFile, root);
          
          fclose(fInputFile);
          fclose(fOutputFile);
          return 0;
          }                      
                                           
0
BastienL21 Messages postés 172 Date d'inscription dimanche 10 décembre 2000 Statut Membre Dernière intervention 12 février 2009 2
9 mai 2008 à 21:02
Bonsoir,
Désolé mais j'ai bien peur de ne pas être à la hauteur (je débute)
Mais je peu tout de même essayer
Pourrais-tu Expliquer précisément ce que ce programme est sensé faire STP ?

Cordialement,[Insert_Emoticon%28%27/imgs2/smile.gif%27%29; ]
             Bastien
 
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
waloo92i Messages postés 4 Date d'inscription lundi 11 juin 2007 Statut Membre Dernière intervention 12 mai 2008
9 mai 2008 à 21:17
Il s'agit dans un premier temps de créer un fichier à partir du clavier ou chaque enregistrement est formé d'un nom et d'un solde, puis charger ce fichier en mémoire centrale pour le trier par ordre alphabétique avant d'écraser ce fichier avec le fichier trié.
Puis dans un deuxiéme temps il faut prévoir la modification du solde directement sur le fichier trié

c'est sa qu'il est sensé faire lol je sais pas comment te l'expliquer autrement méme moi g du mal a le comprendre
0
waloo92i Messages postés 4 Date d'inscription lundi 11 juin 2007 Statut Membre Dernière intervention 12 mai 2008
12 mai 2008 à 01:49
bon j'ai faciliter un peu le programme est ce que quelqu'un pourait me le corriger parce qu'il me semble qu'il y'a un probléme de segmentaion voila le code:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
typedef struct{
          char NOM_PERS[30] ;
          float solde ;
          }personne ;
int main()
{
  FILE *P_FICHIER; /* pointeur sur FILE */
  typedef struct{
          char NOM_PERS[30] ;
          float solde ;
          }personne ;
         
    int  C,NB_ENREG , i;
 
  char NOM_FICHIER[30], tab[C];
 
  personne p;
     
  /* Première partie :
     Créer et remplir le fichier */


  printf("Entrez le nom du fichier à créer : ");
  scanf("%s",&NOM_FICHIER);
  P_FICHIER = fopen(NOM_FICHIER, "a+");  /* write */
  printf("Nombre d'enregistrements à créer : ");
  scanf("%d",&NB_ENREG);
  C = 0;
  while (C<NB_ENREG)
     {
      printf("Entrez le nom de la personne : ");
      scanf("%s",p.NOM_PERS);
      fprintf(P_FICHIER, "%s ", p.NOM_PERS);
      printf("entrez un solde : ");
      scanf("%f",&p.solde);
      fprintf(P_FICHIER,"%f\n",p.solde);
      C++;
     }
  for(i=0 ; i< C ; i++){
          tab[i]==p.NOM_PERS[30] ;
          fprintf(P_FICHIER,"%s",tab[i]);
          }
            
  fclose(P_FICHIER);
    /* Deuxième partie :
     Lire et afficher le contenu du fichier */
  P_FICHIER = fopen(NOM_FICHIER, "r");  /* read */
  C = 0;
  while (!feof(P_FICHIER))
     {
      fscanf(P_FICHIER, "%s", p.NOM_PERS);
       fscanf(P_FICHIER, "%f\n",p.solde);
C++;
     }
  for(i=0 ; i< C ; i++){
          fscanf(P_FICHIER,"%s",tab[i]);
          }
     
    
  fclose(P_FICHIER);
  
   return 0;
   }
0
Rejoignez-nous