IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 C Discussion :

Transfert de nombre


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Février 2010
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2010
    Messages : 5
    Par défaut Transfert de nombre
    Bonjour, j'ai créer un fichier affichant des nombres aléatoires, j'aimerai récuperer ces nombres dans un autre fichier et les réafficher, mais les nombres afficher dans la destination ne sont pas les nombres initiaux.

    Pouvez vous m'aider?

    Merci d'avance.
    voici mon code:
    partie envoi:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    #include <stdio.h>
    #include <stdlib.h>
    #include <conio.h>
    #include <time.h>
    #include <dos.h>
    #include <fcntl.h>
    #include <io.h>
    #define maxi 10
     
    int main()
    {
     
     
        unsigned long *table,i;
        int clefichier;  // Clé fichier - handle en DOS
        table=(unsigned long*)malloc(maxi * sizeof(unsigned long));  // réservation du bloc
        for(i=0;i<maxi;i++)*(table+i)=rand()%200; // remplissage random
     
     
       if(clefichier=open("C:\\Users...\\tri.dat",O_CREAT|O_RDWR|O_BINARY)!=-1)
    {
     
     
     
     
        write(clefichier,table,maxi*sizeof(unsigned long));  // écrire le bloc
        close(clefichier);  // fermeture
     
     
        printf("%d",clefichier);
        for(i=0;i<maxi;i++)printf("%10lu",*(table+i)); // table
     
        free(table);  // rendre la mémoire
     
     
    	return 0;
     
     
    }
     }
    partie réception
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    #include <conio.h>
    #include <time.h>
    #include <dos.h>
    #include <fcntl.h>
    #include <io.h>
    #define maxi 1000
    int comparer (const void*, const void*); // Fonction de comparaison
    int main()
    {
     
     
        unsigned long *table,i;
        int clefichier,triage;
     
        table=(unsigned long*)malloc(maxi * sizeof(unsigned long));  
     
       if((clefichier=open("C:\\Users...\\tri.dat",O_BINARY|O_RDONLY))!=-1); 
    {
     
        triage=read(clefichier,table,maxi*sizeof(unsigned long));
     
     
       for(i=0;i<maxi;i++) printf("%10lu",*(table+i));
     
        close(clefichier);  // fermeture
    free(table) ;
    }
    }

  2. #2
    Membre éclairé
    Inscrit en
    Avril 2010
    Messages
    66
    Détails du profil
    Informations personnelles :
    Âge : 34

    Informations forums :
    Inscription : Avril 2010
    Messages : 66
    Par défaut
    Bonjour,

    Le problème ne viendrait-il pas de la différence entre maxi de la partie envoi et celui de la partie réception ?

    Partie envoi :
    Partie réception :

  3. #3
    Rédacteur

    Avatar de ok.Idriss
    Homme Profil pro
    IS Consultant
    Inscrit en
    Février 2009
    Messages
    5 220
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : IS Consultant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2009
    Messages : 5 220
    Par défaut
    Bonjour.

    Je remarque aussi que le return 0; de la fonction main() de ta "partie envoi" est dans un bloc if => Il doit se situer en dehors de ce bloc.

    Par ailleurs, la fonction main() de ta "partie reception" doit aussi avoir un retour de type int (0 ou EXIT_SUCCESS en cas de succès à l'exécution et 1 ou EXIT_FAILURE en cas d'echec par exemple).

    Cordialement,
    Idriss

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Février 2010
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2010
    Messages : 5
    Par défaut Transfert de nombre
    merci,

    Effectivement cela fonctionne correctement maintenant.

    Cependant lorsque je définit un nombre dans define > à 1000, il ne m'affiche que des 0. Y aurait t'il un problème avec le malloc lors de la réservation de la mémoire (pas assez de place pour plus de 1000 nombres ?)

    Merci d'avance.

  5. #5
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 835
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 835
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Speed001 Voir le message
    Cependant lorsque je définit un nombre dans define > à 1000, il ne m'affiche que des 0. Y aurait t'il un problème avec le malloc lors de la réservation de la mémoire (pas assez de place pour plus de 1000 nombres ?)

    Merci d'avance.
    Non, sinon malloc() te renverrait NULL.

    C'est que maxi est utilisé dans read() et write() comme taille de l'élément à lire et/ou à écrire. Or, cette taille est limitée à 32767 octets...
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2003] Transfert de nombre décimal Excel-> VBA-> Excel
    Par ankoubzh dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 24/06/2009, 07h35
  2. Transfert d'objects volumineux et en nombre indéterminé
    Par ager1912 dans le forum Windows Communication Foundation
    Réponses: 3
    Dernier message: 25/03/2009, 11h12
  3. transfert excel d'un grand nombre de données
    Par djerbafr dans le forum VBA Access
    Réponses: 1
    Dernier message: 05/08/2008, 12h05
  4. Nombre de fichiers ouverts simultanément
    Par matrixfan dans le forum C++Builder
    Réponses: 3
    Dernier message: 27/05/2002, 17h47
  5. [Kylix] Probleme de nombre flottant!!
    Par yopziggy dans le forum EDI
    Réponses: 5
    Dernier message: 02/05/2002, 10h13

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo