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 :

ecrire dans un fichier une immense quantité de données


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2012
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Mars 2012
    Messages : 39
    Par défaut ecrire dans un fichier une immense quantité de données
    bonjour tout le monde

    s'il vous plait est ce que quelqu'un pourrait m'indiquer comment écrire une quantité importante de donées dans un fichier, cette quantité peut depasser le 1G, et le type est aléatoire (ça pourrait être une suite de "0" ou "FF" ,, n'importe quoi ) ,, et en utilisant la fonction "fprintf" biensur,

    merci d'avance ,,

  2. #2
    Expert confirmé

    Inscrit en
    Août 2006
    Messages
    3 967
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 3 967
    Par défaut
    Koe,

    [TROLL]

    Une suggestion : commencer par la 1ère donnée, et s'arrêter une fois la dernière écrite.

    [/TROLL]

  3. #3
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Chercheur d'emploi
    Inscrit en
    Septembre 2007
    Messages
    7 484
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Chercheur d'emploi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 484
    Par défaut
    Il faut ouvrir ton fichier avec fopen(), écrire dedans avec fprintf() par exemple, et le refermer avec fclose().

    Pour écrire une grande quantité de données, il suffit de faire une boucle. Avec for(), par exemple, tu peux demander à ton programme de répéter n fois ta commande fprintf.

    Jusqu'à 1 Go ou un peu plus loin, tu n'auras pas de problème. Par contre, passé 2 Go, il faut vérifier si ton système de fichiers est capable de prendre en charge les fichiers dits « large » en anglais. Il est très fréquent que 2 Gio soit une limite maximum pour les fichiers.

  4. #4
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2012
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Mars 2012
    Messages : 39
    Par défaut
    Bonjour tout le monde, le problème est résolu ,,, j'ai essayé de developper le code suivant:
    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
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #include <time.h>
     
     
     
    int main(int argc, char* argv[]) {
        FILE* fp_outfile;
        int len, count;
        unsigned char bytes[1024 * 1024];
        time_t start, finish, difference;
     
        memset(bytes, 0xAA, sizeof(bytes));
     
      {
            len = atoi(argv[2]);
            count = len;
            if (len > 0) {
                fp_outfile = fopen(argv[1], "w+");
                start = time(NULL);
                while (len > 0) {
                    fwrite(bytes, 1, sizeof(bytes), fp_outfile);
                    --len;
                }
                finish = time(NULL);
                difference = finish - start;
                fclose(fp_outfile);
                printf("wrote %d megabytes in %d seconds\n", count, (int)difference);
            }
        }
        return 0;
    }
    ça marche parfaitement,,, mais j'ai pas trouvé un autre moyen plus precis aue "time(NULL)" ,,, cette fonction renvoir le temps écoulé EN SECONDES depuis le 1er janvier 1970 , je me demande s'il y avait un autre outils de mesure plus fin , en millisecondes par exemple ?

  5. #5
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par Platon d'athene Voir le message
    je me demande s'il y avait un autre outils de mesure plus fin , en millisecondes par exemple ?
    oui

    Dans la rubrique sources, sous-rubrique Gestion des Dates, il y a une fonction de mon cru pour récupérer le temps réel absolu en micro-secondes ..

    ici


  6. #6
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2012
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Mars 2012
    Messages : 39
    Par défaut
    salut tout le monde

    souviron, j'ai enfin pu rectifier la fonction , j'ai obtenu une precision en microsecondes , avec la fonction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    gettimeofday(&start, NULL);
    ,,,,, on peut la mettre comme une sonde au debu et a la fin de chaque bloc de code qu'on desir savoir la durée de son éxécution, et soustraire les deux valeurs par la suite avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    timersub(&finish, &start, &difference);
    ,,,,,,,

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

Discussions similaires

  1. Ecrire dans un fichier à une ligne donnée
    Par Matt014 dans le forum Langage
    Réponses: 4
    Dernier message: 08/06/2011, 21h11
  2. Ecrire dans un fichier une image et un texte (un tableau)
    Par GatH7614 dans le forum Collection et Stream
    Réponses: 4
    Dernier message: 04/11/2010, 10h32
  3. Réponses: 3
    Dernier message: 19/09/2008, 09h46
  4. Ecrire dans un fichier une liste de liste
    Par Victoria007 dans le forum Général Python
    Réponses: 4
    Dernier message: 12/03/2008, 09h55
  5. Réponses: 25
    Dernier message: 13/09/2007, 14h43

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