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 :

Les tableaux et variables


Sujet :

C

  1. #1
    Membre confirmé
    Inscrit en
    Juin 2004
    Messages
    78
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 78
    Par défaut Les tableaux et variables
    Salut

    je voudrais savoir s'il est possible de récupérer certains caractere (le deux premiers) d'un tableau de caractere et de les placer dans une variable.

    Comment parcourt-on un fichier en C lorsqu'on a enregistrer les informations de maniere linéaire? indexation des informations.
    (ex : 1 chien 2ans
    2 chat 6mois....)

  2. #2
    Expert confirmé

    Avatar de fearyourself
    Homme Profil pro
    Ingénieur Informaticien Senior
    Inscrit en
    Décembre 2005
    Messages
    5 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Ingénieur Informaticien Senior
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2005
    Messages : 5 121
    Par défaut
    Citation Envoyé par nemesys971
    je voudrais savoir s'il est possible de récupérer certains caractere (le deux premiers) d'un tableau de caractere et de les placer dans une variable.
    En théorie oui mais cela dépend vraiment de ce que tu veux faire, un exemple peut-être?

    Comment parcourt-on un fichier en C lorsqu'on a enregistrer les informations de maniere linéaire? indexation des informations.
    (ex : 1 chien 2ans
    2 chat 6mois....)
    A la main, avec fopen et fgets
    Voir les pages man : http://man.developpez.com

    Jc

  3. #3
    Membre confirmé
    Inscrit en
    Juin 2004
    Messages
    78
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 78
    Par défaut
    j'ai une chaine de caractere :
    01 | 645 | 14.81 | 06/05/06 | 00 | 4355

    (note les ' | ' sont la pour bien montrer les diférentes informations)

    et je voudrais récupérer le 2 premier caractere.

    A savoir : si on peut le faire aussi simplement avec les structures je suis preneuse (je n'ai pas réussi a la faire)

  4. #4
    Membre éclairé Avatar de Seandest
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    54
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Doubs (Franche Comté)

    Informations forums :
    Inscription : Avril 2006
    Messages : 54
    Par défaut
    Bonjour,

    Tu peux créer une structure de données puis la stocker dans un fichier, exemple :

    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
     
    struct MaStructure
     
    {<div style="margin-left:40px">int ID;
    ....
     
    </div>};
     
    int main()
     
    {<div style="margin-left:40px">FILE *pFout;
    MAStructure Structure;
     
    // ouvre ton fichier 
    ...
     
    // stock ta structure
    fwrite(&Structure, sizeof(Structure), 1, pFout);
     
    // ferme ton fichier
    ...
     
    return 0;
    </div>}
    Tu peux en stocker plusieurs et les charger en te déplaçant dans le fichier.

  5. #5
    Membre confirmé
    Inscrit en
    Juin 2004
    Messages
    78
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 78
    Par défaut
    oui mais avec
    fwrite(&Structure, sizeof(Structure), 1, pFout);
    lorsqu'on ouvre un fichier txt par exemple on ne comprend rien. ce n'est pas mieu avec fprintf?


    Et comment fait on pour avoir une structure par ligne?

  6. #6
    Expert confirmé

    Avatar de fearyourself
    Homme Profil pro
    Ingénieur Informaticien Senior
    Inscrit en
    Décembre 2005
    Messages
    5 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Ingénieur Informaticien Senior
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2005
    Messages : 5 121
    Par défaut
    Citation Envoyé par nemesys971
    oui mais avec
    fwrite(&Structure, sizeof(Structure), 1, pFout);
    lorsqu'on ouvre un fichier txt par exemple on ne comprend rien. ce n'est pas mieu avec fprintf?


    Et comment fait on pour avoir une structure par ligne?
    Si ton fichier est écrit en format texte, utilise fgets et strtol et strtod

    Jc

  7. #7
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par nemesys971
    j'ai une chaine de caractere :
    01 | 645 | 14.81 | 06/05/06 | 00 | 4355

    et je voudrais récupérer le 2 premier caractere.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <...>
    char a[2];
     
    a[0] = fgetc(fp);
    a[1] = fgetc(fp);
    Mais tu n'as pas dit ce que tu voulais en faire. Si c'est pour récupérer la valeur numérique, c'est autre chose...

  8. #8
    Membre confirmé
    Inscrit en
    Juin 2004
    Messages
    78
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 78
    Par défaut
    j'ai un souci ...

    Je récupere les données et pour l'instant tout va bien et lorsque je veux sauvegarder la ca me fais "erreur" et donc la je dois fermer le programme.

    je vous met la partie du code qui me pose probleme.

    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
     
      printf("\n\t Saisir le nombre de tirage : ");
      scanf("%d", &UnTirage.NbTirage); // Saisi du nombre total de tirage
     
      for (i=0; i<=1; i++)
      {  printf("\n\t Saisir le NbFois "); 
          scanf("%d", &UnTirage.NbFois); // Saisie du nombre de fois tiré
                      UnTirage.Pourcentage=(UnTirage.NbFois/UnTirage.NbTirage)*100.00;
          printf("%.2f", UnTirage.Pourcentage);
     
          printf("\n\t Saisir la date du tirage. (JJ/MM/AAAA) :  ");
          scanf("%s", UnTirage.Date); // Saisie de la date de sorti
     
          printf("\n\t Saisir le Ecart ");
          scanf("%d", UnTirage.Ecart); // Saisie de l'ecart
     
          // Ecriture dans le fichier
          fwrite(&UnTirage, sizeof(UnTirage), 1, PtrFichier);
       }
       fclose(PtrFichier); // Fermuture du fichier
    Et la je ne sais pas ceque je dois faire

  9. #9
    Expert confirmé
    Avatar de diogene
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2005
    Messages
    5 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 761
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
          scanf("%s", UnTirage.Date); // Saisie de la date de sorti 
    ....
         scanf("%d", UnTirage.Ecart); // Saisie de l'ecart
    ces critures sont suspectes par rapport à
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    scanf("%d", &UnTirage.NbTirage);
    ....
    scanf("%d", &UnTirage.NbFois);
    N'est ce pas plutôt
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
          scanf("%d", &UnTirage.Date); // Saisie de l'ecart
    ....

  10. #10
    Membre confirmé
    Inscrit en
    Juin 2004
    Messages
    78
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 78
    Par défaut
    Merci


    Heureusement ke je l'avais écris comme ca pour une parti... (désolé trop étourdie...)

    je peux indexer l'affichage comment (pour que tous soit écrit en colonne et non pas stocker mes 49 strucutures sur une seule ligne)

    c'est simple de passer de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    fwrite(&UnTirage, sizeof(UnTirage), 1, PtrFichier);
    à
    lorsque l'on utilise une structure?

  11. #11
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par nemesys971
    c'est simple de passer de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    fwrite(&UnTirage, sizeof(UnTirage), 1, PtrFichier);
    à
    lorsque l'on utilise une structure?
    Oui. Il faut définir un format 'intelligent', c'est à dire facilement lisible.
    CSV, par exemple. Pour les détails, est ton ami...

  12. #12
    Membre confirmé
    Inscrit en
    Juin 2004
    Messages
    78
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 78
    Par défaut
    ok je te remerci

Discussions similaires

  1. [DATA] Les tableaux (array) de variables
    Par Haache dans le forum SAS Base
    Réponses: 6
    Dernier message: 08/03/2014, 19h53
  2. Réponses: 14
    Dernier message: 01/09/2003, 22h46
  3. Les tableaux en PL/SQL
    Par GRUMLY dans le forum PL/SQL
    Réponses: 5
    Dernier message: 12/08/2002, 18h10

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