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 :

Histoire de manipulation de chaine[]


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Avril 2020
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Avril 2020
    Messages : 18
    Par défaut Histoire de manipulation de chaine[]
    bonjour

    j'aurais besoin de vos lumieres,

    mon probleme, j'ai un repertoire avec des noms de fichier identique mais qui son indexes entre eux.
    (dans l'exemple ci joint)
    j'arrive a faire un traitement de recuperation de données du 1er fichier (000).map
    pour le deuxieme fichier, j'arrive a separer la chaine de caractere et isoler '000' mais comment incrementer +1 et remettre dans la chaine en conservant 001
    pour changer de fichier

    j'ai joint un fichier main.c j'espere ne pas mettre planté

    merci a vous
    Fichiers attachés Fichiers attachés
    • Type de fichier : c main.c (983 octets, 38 affichages)

  2. #2
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 835
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 835
    Billets dans le blog
    1
    Par défaut
    Bonjour
    Citation Envoyé par charente Voir le message
    pour le deuxieme fichier, j'arrive a separer la chaine de caractere et isoler '000' mais comment incrementer +1 et remettre dans la chaine en conservant 001
    unsigned short v=strtoul("000", NULL, 10) pour convertir la string "000" en valeur 0. Ensuite sprintf(chaine, "(%03hu).map", v+1) pour mettre la string "(001).map" dans le tableau "chaine". Si on est sûr de sa chaine d'origine et qu'on ne veut pas tester l'échec éventuel de strtoul() alors on peut regrouper tout ça en sprintf(chaine, "(%03hu).map", strtoul("000", NULL, 10) + 1).

    Citation Envoyé par charente Voir le message
    j'ai joint un fichier main.c j'espere ne pas mettre planté
    m'être (du verbe "être" qu'on applique à soi-même) et non le verbe "mettre". C'est l'orthographe qui permet d'indiquer la notion des choses. "a essayé" et "à essayer" ont des significations totalement différentes et ça aggace de lagguer à devoir revenir sans cesse au début du texte parce que le sens des mots va à l'encontre du sens général de la phrase.
    Et ici on a plutôt l'habitude de poster les codes directement dan les topics. Ca permet de faire rapidement un copier/coller plutôt que de demander à l'intervenant d'aller en plus télécharger le code pour pouvoir le lire. Si encore c'est un projet de plusieurs Mo et qu'on te le propose ok mais pour ton truc à 34 lignes tu aurais pu faire un petit effort...
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  3. #3
    Membre averti
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Avril 2020
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Avril 2020
    Messages : 18
    Par défaut
    merci pour ta réponse rapide,

    je prend note de, m'être trompé

    bon week-end

  4. #4
    Membre averti
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Avril 2020
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Avril 2020
    Messages : 18
    Par défaut
    solution

    je te remercie encore une fois pour ton aide

    la solution que j'ai trouvé

    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
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    int i=0;
    int main()
    {
    char cheminAvant[] = "c:/carte corse/corse 25000 IGN 15 (000).map";
    int positionPremier = strlen(cheminAvant) - strlen(strchr(cheminAvant, '('));
    // resultat 35
    int positionDernier = strlen(cheminAvant) - strlen(strrchr(cheminAvant, ')'));
    //resultat 38
    unsigned short v=strtoul("000", NULL, 10);
     for (i=0;i<5;i++) // boucle 5 fois pour test
       {
       char fin[50] = { 0 };
       char cheminApres[50] = { 0 };
     
       strncpy (cheminApres,cheminAvant,positionPremier);
       strncpy (fin,cheminAvant+positionDernier,7);
     
     
       sprintf(fin,"(%03hu).map", v+1);
    // fin =(00x).map
       v=v+1;
     
    // cheminApres =c:/carte corse/corse 25000 IGN 15
    // fin= (001).map
       strcat(cheminApres,fin);
    // cheminApres =c:/carte corse/corse 25000 IGN 15 (001).map
     
       printf("chemin avant %s",cheminAvant);
       printf ("  chemin Apres %s\n",cheminApres);
     
       }
    }
    merci

  5. #5
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 835
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 835
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par charente Voir le message
    la solution que j'ai trouvée
    Mouais...
    Code c : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    #include <stdlib.h>
    #include <string.h>
     
    int main() {
    	for (unsigned short i=0; i < 5; i++) {
    		char chemin[50];
    		sprintf(chemin, "c:/carte corse/corse 25000 IGN 15 (%03hu).map", i);
    		printf("%s\n", chemin);
    	}
    }
    Et encore, je ne suis même pas certain que "chemin" soit super utile si tu veux juste afficher les noms des fichiers.
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

Discussions similaires

  1. Manipulation de chaines
    Par tchoukapi dans le forum Shell et commandes GNU
    Réponses: 12
    Dernier message: 04/09/2006, 17h41
  2. [D7] Manipulations de chaines
    Par jer64 dans le forum Delphi
    Réponses: 2
    Dernier message: 21/07/2006, 22h16
  3. [PLSQL] Manipulation des chaines.
    Par zero d dans le forum Oracle
    Réponses: 5
    Dernier message: 14/12/2005, 18h27
  4. Réponses: 4
    Dernier message: 20/08/2004, 10h59
  5. Fonctions de manipulation des chaines et des dates
    Par Fares BELHAOUAS dans le forum Débuter
    Réponses: 3
    Dernier message: 09/11/2002, 22h43

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