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 :

ouvrire un fichier et modifier


Sujet :

C

  1. #1
    Membre confirmé
    Inscrit en
    Avril 2007
    Messages
    65
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 65
    Par défaut ouvrire un fichier et modifier
    salut voila mon code pour générer des nombre aléatoirement dans un fichier


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    void main()
    {
    int t[100],*p;
    FILE* fp;  // pointer file
     
    if((fp=fopen(C:\\MyFile.txt,"wb"))==NULL)
    exit(1);
    for(p=t;p<t+100;p++)
    *p=(rand()%(50-10+1)+10 //ce forme de (b-a+1)+a    [a,b] <->[0,b-a]
    fwrite(t,sizeofint,100,fp);
    fclose(fp);
    }
    je veut ds chose plus obtimisé

  2. #2
    Membre éclairé Avatar de Bayard
    Inscrit en
    Juin 2002
    Messages
    863
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 863
    Par défaut
    1)
    je veut ds chose plus obtimisé
    Là, il y a en moyenne une faute d'orthographe tout les 2 mots. Le générateur de nombre aléatoire n'est pas celui que l'on croit...

    2) Il faut mettre des tabulations. Je ne lis pas de code non tabulé.

    3) Je suggère de mettre des accolades après le "if" ainsi qu'après la boucle "for".

    4) Il faut utiliser des constantes ("100" en dur partout est regrettable). exit(1) est également à modifier.

    5)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    *p=(rand()%(50-10+1)+10
    Ca compile sans ; à la fin ?

    6) J'ai du mal à trouver une optimisation (en taille j'entends).

  3. #3
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Par défaut
    Sans correction aucune:
    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 <stdio.h>
    #include <stdlib.h>
     
     
    #define TAILLE 100
     
     
    int main (void)
    {
       int      t[TAILLE];
       int   *  p  = NULL;
       FILE  *  fp = NULL;
     
     
       if ((fp = fopen ("C:\\MyFile.txt", "wb")) != NULL)
       {
          for (p = t; p < t + TAILLE; p++)
          {
             *p = (rand () % (50 - 10 + 1)) + 10;
          }
     
          fwrite (t, sizeof int, TAILLE, fp);
          fclose (fp);
       }
     
     
       return EXIT_SUCCESS;
    }
    Tu vois, c'est pas si dur de faire un code propre et de ce fait lisible et agréable pour les autres !
    Mon Site
    Ma bibliothèque de gestion des chaînes de caractères en C

    L'imagination est plus importante que le savoir. A. Einstein

    Je ne répond à aucune question technique par MP, merci d'avance !

  4. #4
    Membre éclairé Avatar de Bayard
    Inscrit en
    Juin 2002
    Messages
    863
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 863
    Par défaut
    Est-il certain que le fwrite est à l'intérieur de la boucle ?

  5. #5
    Rédacteur/Modérateur
    Avatar de Trap D
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    4 942
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 4 942
    Par défaut
    Le fwrite n'est pas dans la boucle, et pour avoir du "vrai" aléatoire, il faudrait initialiser le générateur par srand(time(NULL)) par exemple.
    Franck H >> J'aurais mis mais il est vrai que tu as écrit, "sans correction aucune"
    Autre remarque, l'extension ".txt" du fichier est pour le moins abusive, je voudrais bien voir ce que ça donne dans notepad
    "La haine seule fait des choix" - Koan Zen
    "Il ne faut pas être meilleur que les autres, il faut être meilleur que soi." Albert Jacquard
    "Ceux qui savent où ils ont posé leur parapluie ne sont pas alcooliques." - pgibonne.
    Faites du Prolog, ça vous changera les idées !
    Ma page Prolog
    Mes codes sources commentés

    Mon avatar : La Madeleine à la veilleuse de Georges de La Tour

  6. #6
    Membre confirmé
    Inscrit en
    Avril 2007
    Messages
    65
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 65
    Par défaut
    NN la fonction write n'est pas dans la boucle la boucle s'arrête dans
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    *p=rand()%(100-10+1)+10;

  7. #7
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Par défaut
    Citation Envoyé par Bayard
    Est-il certain que le fwrite est à l'intérieur de la boucle ?
    Oui exacte, c'est ce qui arrive avec des code non mis en forme

    Citation Envoyé par Trap D
    Franck H >> J'aurais mis mais il est vrai que tu as écrit, "sans correction aucune"
    Oui c'est vrai
    Mon Site
    Ma bibliothèque de gestion des chaînes de caractères en C

    L'imagination est plus importante que le savoir. A. Einstein

    Je ne répond à aucune question technique par MP, merci d'avance !

Discussions similaires

  1. Réponses: 0
    Dernier message: 29/01/2012, 15h15
  2. Ouvrir un fichier le modifier et le refermer
    Par wuging dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 24/08/2010, 13h05
  3. Réponses: 14
    Dernier message: 15/09/2006, 18h34
  4. Ouvrir un fichier excel sans pouvoir le modifier
    Par snakejl dans le forum Langage
    Réponses: 6
    Dernier message: 09/06/2006, 11h46

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