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 :

Affichage et création de fichier


Sujet :

C

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    896
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 896
    Par défaut Affichage et création de fichier
    bjr,
    Qui peut me dire pourquoi ce code n'arrive pas à créer 9999 fichiers? Autre indication je n'arrive pas à lister les valeurs de "i" au dela de 500 alors que je lui demande d'afficher de 0 à 9999... Etrange non ? Il m'afiche avec le printf de 9590 à 9990 et me créé 1020 fichiers au lieu de 9999 demandés. si quelqu'un peut m'aider. Merçi
    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
     
     long i=0;
     
       char buf[5];
       FILE * fic;
       printf("i=%d\n",i);
     
       do 
     
         {
           sprintf(buf,"%04d",i);
           printf("i while =%d\n",i);
           fic=fopen(buf,"w+"); 
           i++; 
        }
     
        while(i<=9999);

  2. #2
    Rédacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Mai 2007
    Messages
    11 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 517
    Par défaut
    tu ouvres des fichiers evec "fic=fopen(buf,"w+"); ", tu ne teste jamais le retour et en plus, tu ne fermes jamais ces fichiers avec fclose().

    Tu arrives donc à une limites du système qui est le nombre maximal de fichiers ouverts par process.
    Raymond
    Vous souhaitez participer à la rubrique Réseaux ? Contactez-moi

    Cafuro Cafuro est un outil SNMP dont le but est d'aider les administrateurs système et réseau à configurer leurs équipements SNMP réseau.
    e-verbe Un logiciel de conjugaison des verbes de la langue française.

    Ma page personnelle sur DVP
    .

  3. #3
    Invité
    Invité(e)
    Par défaut
    Et puis tu as un seul pointeur de fichier pour tes 10 000. Donc à chaque tour de boucle tu "perds" ton fichier, et tu ne pourras plus écrire dedans ou le fermer.
    Si tu veux te servir des fichiers après la boucle, il te faut un tableau de pointeurs de fichier :
    Si tu veux juste les créer, il faut comme dit xeron tester que l'ouverture s'est bien passée et les fermer ensuite :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    do 
     
         {
           sprintf(buf,"%04d",i);
           printf("i while =%d\n",i);
           fic=fopen(buf,"w+");
           if(fic)
             fclose(fic);
           i++; 
        }

  4. #4
    Rédacteur
    Avatar de Vincent Rogier
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    2 373
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 373
    Par défaut
    Citation Envoyé par xeron33 Voir le message
    ... Etrange non ? ...
    Étrange, non ! Logique, Oui au vu du code posté .....
    Vincent Rogier.

    Rubrique ORACLE : Accueil - Forum - Tutoriels - FAQ - Livres - Blog

    Vous voulez contribuer à la rubrique Oracle ? Contactez la rubrique !

    OCILIB (C Driver for Oracle)

    Librairie C Open Source multi-plateformes pour accéder et manipuler des bases de données Oracle

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    896
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 896
    Par défaut concatener un tableau de caractère et un caractère seul
    bjr et merçi à tous pour toutes vos indications, j'ai un autre problème je veux concaténer une chaine de caractères avec un caractère seul voiçi le code :
    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
       char final[6],buf[5]; 
       char f='F';
       int i=0;
       do 
       
         {
           sprintf(buf,"%04d",i);
          sprintf(final,"%s%s",f,buf);
             tab_fic[i]=fopen(buf,"wb");
              if (tab_fic[i] != NULL)
           {
             printf("ok création\n");
             fclose(tab_fic[i]);
           }
           i++;}
    à l'exécution j'ai ce message "Erreur de segmentation (core dumped)" . Si quelqu'un connait comment faire. Merçi encore

  6. #6
    Rédacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Mai 2007
    Messages
    11 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 517
    Par défaut
    f n'est pas une chaine de caracteres mais un caractere (c'est pas pareil). Il faut faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sprintf(final,"%c%s",f,buf);
    Raymond
    Vous souhaitez participer à la rubrique Réseaux ? Contactez-moi

    Cafuro Cafuro est un outil SNMP dont le but est d'aider les administrateurs système et réseau à configurer leurs équipements SNMP réseau.
    e-verbe Un logiciel de conjugaison des verbes de la langue française.

    Ma page personnelle sur DVP
    .

  7. #7
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    896
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 896
    Par défaut concatener un tableau de caractère et un caractère seul
    merçi pour ta réponse aussi rapide ça marche en effet !
    A +

  8. #8
    Rédacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Mai 2007
    Messages
    11 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 517
    Par défaut
    Au fait,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    char final[6]; 
    char f='F';
    int i=0;
    do 
    {
       sprintf(final,"%c%04d", f, i);
    ...
    ou même mieux encore
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    char final[6]; 
    int i=0;
    do 
    {
       sprintf(final,"F%04d", i);
    ...
    Ca marche aussi (et c'est plus court)
    Raymond
    Vous souhaitez participer à la rubrique Réseaux ? Contactez-moi

    Cafuro Cafuro est un outil SNMP dont le but est d'aider les administrateurs système et réseau à configurer leurs équipements SNMP réseau.
    e-verbe Un logiciel de conjugaison des verbes de la langue française.

    Ma page personnelle sur DVP
    .

  9. #9
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    896
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 896
    Par défaut merçi encore
    merçi donc pour tes précisions j'essairai tout plus tard , puisque tu as l'air disponible j'ai encore des questions en fait je dois écrire un petit programme en C simulant la création de deux équipes de processus dont QG processus principal dans mon programme le père de tous les processus . En fait voila le code que j'ai écrit pour créer les 2 équipes mais à l'éxécution il me crée plus de processus que voulu dans ma boucle (je veux créér 2 équipes ) donc 2 processus QG et 10 processus attaquants . J'espère avoir été assez clair si tu peux m'expliquer ce qui se passe. MErçi (La procedure pour créér les processus se nomme cre_equipe
    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
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
     
    #include <stdio.h>
     
    #include <signal.h>
    #include <stdlib.h>
    int i,equ;
    pid_t pid;
     
    struct processus
      {
        int num_equipe;
        pid_t id;
        int qg; /*si QG = 1 alors processus principal */
      };
    struct processus pr[2];
    void cre_equipe();
    void cre_fichiers();
     
    main()
    {
        cre_equipe();  
       cre_fichiers();
    }
     
    void cre_equipe()
    {
     for(equ=1;equ<=2;equ++)
        {
          pid=fork();
          if (pid==0)
            {
               pr.num_equipe=equ;
               pr.id=getpid();
               pr.qg=1;
               printf("je suis le processus QG, mon id est :%d, n° équipe %d\n",pr.id,equ);
               wait();         
           }
             else
           {
               for(i=0;i<=4;i++)
                 {
                   pid=fork();
                   if (pid!=0)
                    {
                       pr.num_equipe=equ;
                       pr.id=getpid();
                       pr.qg=0;              
                       printf("je suis le processus attaquant, mon id est :%d, n° équipe %d\n",pr.id,equ);
                       exit(0);  
                       printf("i=%d\n",i);   
                    } 
                 }     
           }
         /*exit(0);*/
         }
    }
     
    void cre_fichiers()
    {
       int ouv,ferm,suppr;
       char f='F';
       char buf[5];
       char final[6];
       FILE * tab_fic[11];
       do 
         {
           sprintf(buf,"%04d",i);
           sprintf(final,"%c%s",f,buf);
           tab_fic[i]=fopen(final,"wb");
            /*  if (suppr=remove(buf)==0) printf("ok suppr");*/
           if (tab_fic[i] != NULL)
           {
             printf("ok création %s\n",final);
             fclose(tab_fic[i]);
           }
           i++;
         }  
       while(i<=10);
    }

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

Discussions similaires

  1. Affichage pdf via un Blob sans création de fichier
    Par orphee13 dans le forum Langage
    Réponses: 2
    Dernier message: 23/10/2008, 17h47
  2. Réponses: 2
    Dernier message: 10/10/2008, 19h40
  3. Création de fichier
    Par gsxr man dans le forum ASP
    Réponses: 2
    Dernier message: 28/06/2004, 22h19
  4. Réponses: 8
    Dernier message: 03/09/2003, 00h47
  5. création de fichiers .x
    Par Pazz dans le forum DirectX
    Réponses: 1
    Dernier message: 03/12/2002, 00h33

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