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 :

[C] Programme Compteur ^^


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Juin 2006
    Messages
    21
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2006
    Messages : 21
    Par défaut [C] Programme Sympa
    Bonjours tout le monde !
    Voila, je suis actuellement en stage dans une entreprise informatique, j'attaque aujourd'hui ma dernière semaine et on m'a donné aujourd'hui un nouveau projet a réaliser en C (ou C++ peut importe), a finir avant vendredi donc ^^

    Voici donc les deux fichiers .txt mis a ma disposition :

    X04 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    35048951000121                     1264698          1408847        010606501216000000011       
    35048951000121                     1264698          1408847        010606501216000000011       
    35048951000121                     1264698          1408847        010606501216000000011       
    35048951000121                     1264699          1418938        010606501216000000011
    Z04 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    35048951000121                     1264698          1408847        AZ3.YD9       
    35048951000121                     1264698          1408847        BT.32841A5.2   
    35048951000121                     1264698          1408847        A.ST1         
    35048951000121                     1264699          1418938        R1.84X2
    Je vous explique maintenant le but du programme :

    Le but est de faire apparaitre a chaque début de ligne un compteur de 5 chiffre de ce genre : 00001, 00002. Seulement, cela n'est valable que lorseque le chiffre de la 2eme colone est identique. Ainsi, tant que je trouverais dans la colone 2 le meme nombre, le compteur s'incrémente de 1, et dès que le nombre de la 2eme colone change, le compteur recommence à 00001.

    Pour illustrer mes propos, voici ce que doivent devenir les deux fichiers, après utilisation du programme :

    X04 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    0000135048951000121                     1264698          1408847        010606501216000000011       
    0000235048951000121                     1264698          1408847        010606501216000000011       
    0000335048951000121                     1264698          1408847        010606501216000000011       
    0000135048951000121                     1264699          1418938        010606501216000000011
    Z04 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    0000135048951000121                     1264698          1408847        AZ3.YD9       
    0000235048951000121                     1264698          1408847        BT.32841A5.2   
    0000335048951000121                     1264698          1408847        A.ST1         
    0000135048951000121                     1264699          1418938        R1.84X2
    Voila, vous voyez donc mieu, ce que je vous ai dis précédemment ^^

    Pour réaliser ce programme, certaines variables me sont imposées, les voici :

    NomFic = Ici, le nom du fichier a modifier
    PosCritere = Indiquer ici la position du critère à comparer pour connaitre la rupture
    LongCritere = indiquer ici la longueur du critère à comparer
    PosCptLig = position où insérer le N° de la ligne, incrémenté de 1 en 1, pour chaque critère équivalent
    LongCptLig = Longueur du compteur de ligne à insérer

    Dans notre exemple précis, voici ce que doivent donner les paramètres :

    NomFic = X04.txt
    PosCritere = 36 ( car 36 caractères pour etre dans la 2eme colonne )
    LongCritere = 17 ( car la 2eme colonne ne dépassera jamais 17 caractères )
    PosCptLig = 1 ( car on incrémente de 1 en chaque début de ligne )
    LongCptLig = 5 ( car le nombre de l'incrémentation doit faire 5 chiffres )

    NomFic = Z04.txt
    PosCritere = 36 ( car 36 caractères pour etre dans la 2eme colonne )
    LongCritere = 17 ( car la 2eme colonne ne dépassera jamais 17 caractères )
    PosCptLig = 1 ( car on incrémente de 1 en chaque début de ligne )
    LongCptLig = 5 ( car le nombre de l'incrémentation doit faire 5 chiffres )

    Voila donc ce que j'ai a faire ^^
    Vous l'aurez compris comme moi je pense, pour faire ce programme, il vaut mieu traiter le fichier caractère par caractère et ligne par ligne afin de se servir des variables.

    Dernière petite précision, les variables que j'ai cité ci dessus, doivent se trouver dans un fichier .ini, de manière a ce que l'on puisse lancer le programme de la facon suivante :
    NOMDUPROG FICHIER.ini


    Seulement, je n'ai aucune idée de comment faire tout ca xD
    J'espère que vous pourrez m'aider ^^
    Merci d'avance

  2. #2
    Rédacteur
    Avatar de MrDuChnok
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2002
    Messages
    2 112
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juin 2002
    Messages : 2 112
    Par défaut
    salut,

    je pense que ton problème n'est pas si compliqué que tu le dit.
    tu lit une ligne entière, tu stocke dans une chaine de caractère temporaire qui fait la taille "LongCritere" les caractères de ta ligne situés entre "PosCritere" et "PosCritere + LongCritere".

    ensuite tu transforme cete chaine en chiffre (ton programme compare uniquement des valeurs numériques ? )
    ensuite si ce chiffre est identique au précédent chiffre que tu a trouvé (et mémorisé) tu incrémente ton compteur (de la valeur de la variable "PosCptLig" : enfin si c'est bien ça l'utilité de cette variable ^^), et tu écris ta nouvelle ligne dans le programme.
    Si le chiffre est différent du précédent, tu met à jour ce chiffre "précédent", puis tu met ton compteur à zéro, et tu écris ta ligne.

    Pour écrire un nombre sur x caractère tu trouvera surement ton bonheur dans la FAQ ou sur ce forum. Je n'ai plus la syntaxe en tête.

    Voila l'algo grossier que j'aurai fait, après c'est plus que de la programmation.

    Pour la lecture du fichier ini, fait une recherche sur le forum ou sur google tu y trouvera beaucoup de renseignement.
    Et pour recupérer un argument passé au programme lors du lancement, idem FAQ + Forum + google.

    J'espère que ça pourra t'aider. bon courage

  3. #3
    Membre chevronné
    Avatar de Foobar1329
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    283
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Juin 2006
    Messages : 283
    Par défaut
    Hello,

    Citation Envoyé par SnaKou
    Bonjours tout le monde !
    Voila, je suis actuellement en stage dans une entreprise informatique, j'attaque aujourd'hui ma dernière semaine et on m'a donné aujourd'hui un nouveau projet a réaliser en C (ou C++ peut importe), a finir avant vendredi donc ^^

    Voici donc les deux fichiers .txt mis a ma disposition :

    X04 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    35048951000121                     1264698          1408847        010606501216000000011       
    35048951000121                     1264698          1408847        010606501216000000011       
    35048951000121                     1264698          1408847        010606501216000000011       
    35048951000121                     1264699          1418938        010606501216000000011
    Z04 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    35048951000121                     1264698          1408847        AZ3.YD9       
    35048951000121                     1264698          1408847        BT.32841A5.2   
    35048951000121                     1264698          1408847        A.ST1         
    35048951000121                     1264699          1418938        R1.84X2
    Je vous explique maintenant le but du programme :

    Le but est de faire apparaitre a chaque début de ligne un compteur de 5 chiffre de ce genre : 00001, 00002. Seulement, cela n'est valable que lorseque le chiffre de la 2eme colone est identique. Ainsi, tant que je trouverais dans la colone 2 le meme nombre, le compteur s'incrémente de 1, et dès que le nombre de la 2eme colone change, le compteur recommence à 00001.
    Heu... Moi c'est en colonne 3 que je vois la condition pour remettre le compteur à 1. A moins que tu partes de la colone 0, mais ça ne colle pas.

    Citation Envoyé par SnaKou

    Pour illustrer mes propos, voici ce que doivent devenir les deux fichiers, après utilisation du programme :

    X04 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    0000135048951000121                     1264698          1408847        010606501216000000011       
    0000235048951000121                     1264698          1408847        010606501216000000011       
    0000335048951000121                     1264698          1408847        010606501216000000011       
    0000135048951000121                     1264699          1418938        010606501216000000011
    Z04 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    0000135048951000121                     1264698          1408847        AZ3.YD9       
    0000235048951000121                     1264698          1408847        BT.32841A5.2   
    0000335048951000121                     1264698          1408847        A.ST1         
    0000135048951000121                     1264699          1418938        R1.84X2
    Voila, vous voyez donc mieu, ce que je vous ai dis précédemment ^^

    Pour réaliser ce programme, certaines variables me sont imposées, les voici :

    NomFic = Ici, le nom du fichier a modifier
    PosCritere = Indiquer ici la position du critère à comparer pour connaitre la rupture
    LongCritere = indiquer ici la longueur du critère à comparer
    PosCptLig = position où insérer le N° de la ligne, incrémenté de 1 en 1, pour chaque critère équivalent
    LongCptLig = Longueur du compteur de ligne à insérer
    J'ai cru un moment que c'était du positionnel, ce qui aurait facilité le travail, mais ce n'est pas le cas. Il te reste à effectuer une lecture ligne par ligne de ton fichier source avec fgets(), puis à isoler chaque colonne sous forme de chaine de caractères avec sscanf() (on peut éventuellement faire directement une lecture formatée dans le fichier, mais cela rend plus difficile la gestion de la lecture du fichier (le fait qu'on ait bien lu une ligne, nécessite à chaque fois de tester si fin de fichier ou erreur si une conversion échoue avec fscanf() ).

    Donc pour faire simple, il te faut un buffer pour accueillir chaque ligne lue (et chaque ligne à écrire) , autant de buffers correctement dimensionnés qu'il y a de colonnes, et un buffer supplémentaire de la taille de la colonne 3 pour conserver la chaine lue au coup précédent en colonne 3.

    A chaque ligne lue par fgets() et conversions réussies par sscanf(), tu regardes si la colonne 3 lue a changé par rapport à la précédente. si c'est le cas, le compteur est remis à 1 sinon non.
    Puis tu peux en un coup formater et écrire ton buffer de ligne dans le fichier de destination avec fprintf().
    Puis rebelote ... jusqu'à la fin de fichier (quand fgets() a à minima renvoyé NULL), pour savoir si c'est une erreur, tester avec ferror().

    Si jamais une erreur survient en cours de traitement, mieux vaut arrêter et défaire ce qui a déjà été fait => Donc, si possible, ne pas faire les lectures/écritures sur un même fichier ouvert en mode mise à jour, mais utiliser un fichier intermédiaire.

    Regarde bien la doc des fonctions d'écriture et lecture formatée (*scanf(), *printf() ), c'est primordial pour savoir comment éviter des débordements de buffer. De ce que je vois, tu peux (dois) traiter les données de tes colonnes comme des chaines de caractères, n'essaies pas pour certaines colonnes d'en faire des entiers dans ton programme par exemple.

    Tu peux aussi utiliser une structure pour stocker les données que tu récupères sur une ligne, je suppose que ca représente quelquechose.

    Citation Envoyé par SnaKou

    [...]
    Dernière petite précision, les variables que j'ai cité ci dessus, doivent se trouver dans un fichier .ini, de manière a ce que l'on puisse lancer le programme de la facon suivante :
    NOMDUPROG FICHIER.ini
    Je crois bien qu'il y a de quoi manipuler directement des fichiers ini sous Windows avec l'API mais je ne m'en rappelle plus comment (GetProfile*() et WriteProfile*()) . De toute façon, tu feras cela dans un deuxième temps. Mieux vaudra d'abord tester la première partie avec des paramètres figés avant de s'amuser à intégrer tout d'un coup.

    Voilà quelques éléments pour démarrer.

    A+

  4. #4
    Modérateur
    Avatar de ToTo13
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Janvier 2006
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 793
    Par défaut
    Bonjour,

    tu l'as dit toi même, il faut sans doute tout faire au niveau des caractères.
    Je te conseille toutefois de lire ligne par ligne et ensuite de regarder le contenu. En tout cas, se sera plus simple à stocker, car vu ton problème, il faut tout que tu garde en mémoire afin de compter les occurences.

    Pour ce qui est de résoudre le problème, le mieux serait peut être de voir ça comme un analyseur lexical :
    - tu lis la première colonne de chiffre sans la mémoriser
    - tu bouffe ensuite tout les espaces
    - tu mets dans un buffer la deuxième série afin de pouvoir la comparer avec la série de la prochaine ligne.
    - Si c'est égal, un petit strcat ajoutera le comteur au début de la ligne.

    Bon courage...
    Consignes aux jeunes padawans : une image vaut 1000 mots !
    - Dans ton message respecter tu dois : les règles de rédaction et du forum, prévisualiser, relire et corriger TOUTES les FAUTES (frappes, sms, d'aurteaugrafe, mettre les ACCENTS et les BALISES) => ECRIRE clairement et en Français tu DOIS.
    - Le côté obscur je sens dans le MP => Tous tes MPs je détruirai et la réponse tu n'auras si en privé tu veux que je t'enseigne.(Lis donc ceci)
    - ton poste tu dois marquer quand la bonne réponse tu as obtenu.

  5. #5
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Juin 2006
    Messages
    21
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2006
    Messages : 21
    Par défaut
    Merci beaucoup pour vos réponses, vous me mettez sur la piste ^^
    Sinon, Foobar1329, il s'agit bien de la 2eme colonne ou je dois prendre en compte la condition, et non la 3eme, je ne comprend pas pourquoi pour toi il te parrait plus évident de faire avec la 3eme colone, les 2 sont a peu de choses pret identiques :/

    Autre petite chose, je ne suis encore qu'un débutant, et je ne comprend pas toujours tout ce que vous me conseillez lol ^^
    Quand vous me dites de faire un "buffer", vous voulez dire une variable temporaire ?
    Et comment associer un "buffer" a une colonne ?


    Je pensais moi aussi qu'il fallait lire ligne par ligne, c'est pourquoi j'avais préparé la syntaxe suivante :

    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
    #define TAILLE_MAX 1000
     
    int main(int argc, char *argv[])
    {
        FILE* fichier = NULL;
        char chaine[TAILLE_MAX] = "";
     
        fichier = fopen("X04.txt", "r");
     
        if (fichier != NULL)
        {
            while (fgets(chaine, TAILLE_MAX, fichier) != NULL) 
            {
                //Code
            }
     
            fclose(fichier);
        }
     
        return 0;
    }
    Est-ce que cela correspond a ce que je dois faire pour continuer le programme ?

    Enfin, je suis d'accord sur le fait qu'il faut que je lise les caractères compris entre "PosCritere" et "PosCritere + LongCritere", et qui fait la taille du "LongCritere", seulement, c'est justement une des choses que je ne sais pas faire, comment établir ce système de "balise" ?

    EDIT : Pour le dernier point que je vien de dire, je pensais utiliser un fseek, mais cela ne me permet que de selectionner ou commence la selection, et non ou cela se termine

  6. #6
    Membre chevronné
    Avatar de Foobar1329
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    283
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Juin 2006
    Messages : 283
    Par défaut
    Re,

    Citation Envoyé par SnaKou
    Sinon, Foobar1329, il s'agit bien de la 2eme colonne ou je dois prendre en compte la condition, et non la 3eme, je ne comprend pas pourquoi pour toi il te parrait plus évident de faire avec la 3eme colone, les 2 sont a peu de choses pret identiques :/

    C'est rien, j'ai du caca dans les yeux...Je viens de regarder, je n'avais pas remarqué que la 2nd colone changeait aussi de valeur, alors que le changement dans la colonne 3 m'avait sauté aux yeux.

    Citation Envoyé par SnaKou


    Autre petite chose, je ne suis encore qu'un débutant, et je ne comprend pas toujours tout ce que vous me conseillez lol ^^
    Quand vous me dites de faire un "buffer", vous voulez dire une variable temporaire ?
    Et comment associer un "buffer" a une colonne ?
    Alors un buffer => tampon => espace mémoire permettant de stocker des données, pas plus pas moins. Cela peut-être de l'espace mémoire alloué de façon dynamique, un tableau automatique ou statique...

    Donc un tableau en C, tu peux le considérer comme étant un buffer.

    Quand je parle d'associer un "buffer" à une colonne, c'est à dire que je vais prévoir par exemple un tableau de taille suffisante pour accueillir la chaine de caractères d'une colonne de la ligne lue.

    Exple, si je sais que j'ai une colonne qui ne pourra excéder 20 caractères :
    char col[20+1];

    Citation Envoyé par SnaKou

    Je pensais moi aussi qu'il fallait lire ligne par ligne, c'est pourquoi j'avais préparé la syntaxe suivante :

    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
    #define TAILLE_MAX 1000
     
    int main(int argc, char *argv[])
    {
        FILE* fichier = NULL;
        char chaine[TAILLE_MAX] = "";
     
        fichier = fopen("X04.txt", "r");
     
        if (fichier != NULL)
        {
            while (fgets(chaine, TAILLE_MAX, fichier) != NULL) 
            {
                //Code
            }
     
            fclose(fichier);
        }
     
        return 0;
    }
    Est-ce que cela correspond a ce que je dois faire pour continuer le programme ?
    Oui, c'est un très bon début. Tu peux maintenant faire une lecture formatée avec sscanf() de ce qu'il y a dans chaine (qui est un "buffer" ) pour extraire les colonnes sous forme de chaines de caractères. Bien penser à tester le retour de sscanf(). N'oublie pas non plus d'inclure stdio.h et de regarder éventullement si fgets() a renvoyé NULL (en fin de boucle de lecture) à cause d'une fin de fichier ou à cause d'une erreur.

    A+

  7. #7
    Rédacteur
    Avatar de MrDuChnok
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2002
    Messages
    2 112
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juin 2002
    Messages : 2 112
    Par défaut
    Si je me trompe pas, pour récupéré ton petit bout de chaine de caractère à partir d'une autre chaine plus grande, tu peux utiliser la fonction strncpy.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    char *strncpy (char *dest, const char *src, size_t n);
    ce qui donne ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    strncpy(dest, src + PosCritere, LongCritere);
    Donc tu va mettre dans la chaine "dest" la sous chaine commençant à 0 + PosCritere et d'une longueur de LongCritere.

    src correspondra par exemple à la ligne que tu aura lu précédemment.
    et dest est une chaine de caractère qui fait LongCritere.

    (j'espère ne pas avoir fait d'erreur dans le code que je t'ai fournis)

  8. #8
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Juin 2006
    Messages
    21
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2006
    Messages : 21
    Par défaut
    Dans ce cas, quelle methode dois-je adopter ? Dois-je me servir du sscanf ( que d'ailleur je n'arrive pas a comprendre sur les differents sites que m'indique google ) ou bien dois-je utiliser le strncpy ?

    Si j'utilise le strncpy en revanche, cela me force a faire de suite le fichier .ini non ? ( parceque mes variables du .ini ne sont pas dans mon main.c )

  9. #9
    Membre chevronné
    Avatar de Foobar1329
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    283
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Juin 2006
    Messages : 283
    Par défaut
    Citation Envoyé par SnaKou
    Dans ce cas, quelle methode dois-je adopter ? Dois-je me servir du sscanf ( que d'ailleur je n'arrive pas a comprendre sur les differents sites que m'indique google ) ou bien dois-je utiliser le strncpy ?

    Si j'utilise le strncpy en revanche, cela me force a faire de suite le fichier .ini non ? ( parceque mes variables du .ini ne sont pas dans mon main.c )
    Alors,

    du point de vue du développeur que je suis, si j'ai

    Citation Envoyé par SnaKou
    Le but est de faire apparaitre a chaque début de ligne un compteur de 5 chiffre de ce genre : 00001, 00002. Seulement, cela n'est valable que lorseque le chiffre de la 2eme colone est identique. Ainsi, tant que je trouverais dans la colone 2 le meme nombre, le compteur s'incrémente de 1, et dès que le nombre de la 2eme colone change, le compteur recommence à 00001.
    Je choisis sscanf() pour la lecture.

    Mais comme il y a aussi d'un autre côté :

    Citation Envoyé par SnaKou
    Pour réaliser ce programme, certaines variables me sont imposées, les voici :

    NomFic = Ici, le nom du fichier a modifier
    PosCritere = Indiquer ici la position du critère à comparer pour connaitre la rupture
    LongCritere = indiquer ici la longueur du critère à comparer
    PosCptLig = position où insérer le N° de la ligne, incrémenté de 1 en 1, pour chaque critère équivalent
    LongCptLig = Longueur du compteur de ligne à insérer
    He bien, ce n'est pas cohérent :
    1) soit je vais placer mon compteur de taille fixe tout le temps en début de fichier à partir d'un critère qui est tout le temps dans la colonne 2, soit
    2) je vais devoir localiser mon critère dans la ligne lue ainsi que devoir positionner mon compteur dans la ligne à écrire.

    Si c'est (1), sscanf() est très bien. Si c'est (2), c'est plus difficile et l'usage de strncpy() est utile. En effet, il faut valider chaque position et chaque longueur pour le critère et le compteur par rapport d'une part à la longueur de la ligne, mais aussi par rapport aux autres données présentes dans la ligne. Ainsi, qu'est-ce qui va permettre de dire si à partir d'une position et d'une longueur donnée, c'est bien le bon critère que tu vas récupérer ? Pas si simple. Quand on traite des fichiers texte, il y a plusieurs modes d'interprétation :
    Positionnel :
    - données de taille fixe à des positions fixes
    - données de taille variables à des positions fixes
    Variable :
    - données de taille fixe à des positions variables
    - données de taille variable à des positions variables

    la solution de paramétrage (2), avec strncpy() par exple, est appropriée pour une interprétation positionnelle (tu sais où sont les données, exple : fichiers EDI). La solution de lecture formatée est appropriée quand tu ne sais pas à priori où est exactement la donnée (position), mais que tu sais où elle se trouve par rapport à d'autres.

    Donc il faut éclaircir ce point entre (1) et (2). Si ce sont les spécifications qui t'ont été données, tu peux aller voir ton N+1 en lui demandant l'intérêt de faire du paramétrage (2) si au bout du compte c'est (1) que tu dois obtenir, car ça ne ressemble pas à du positionnel.

    A+

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

Discussions similaires

  1. programmation d'un compteur sous unity pro du Modicon M340
    Par yanko86 dans le forum Automation
    Réponses: 1
    Dernier message: 05/09/2010, 00h34
  2. Programmer un compteur sur carte FPGA
    Par virtuadrack dans le forum VHDL
    Réponses: 3
    Dernier message: 02/12/2008, 09h18
  3. Programmer un compteur sur carte FPGA
    Par virtuadrack dans le forum Périphériques
    Réponses: 3
    Dernier message: 02/12/2008, 09h18
  4. Réponses: 7
    Dernier message: 20/03/2007, 17h01
  5. Réponses: 6
    Dernier message: 11/05/2006, 17h28

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