Bonjour,
Je suis à la recherche d'un programme permettant d' aller chercher un parametre situé dans un chaine sachant qu'il est reperable par le fait qu'il se passera un nombre constant d'espace avant d'arriver à lui...
Bonjour,
Je suis à la recherche d'un programme permettant d' aller chercher un parametre situé dans un chaine sachant qu'il est reperable par le fait qu'il se passera un nombre constant d'espace avant d'arriver à lui...
Si le format est fixe, sprintf() avec des formats fixes "%<largeur><type>" devrait suffire.Envoyé par maz
Je pense qu'il parlait de ça plutot
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 const char * s = "abcdef-Paramètre"; const char * parametre = s + 7 /* strlen("abcdef-") */;
Dans le cas ou ce n'est pas fixe:Envoyé par maz
Prennons par exemple 3 espaces qui précèdent ton paramètre, tu détectes ton premier espace, puis tu vérifies si les deux suivants caractères sont bien des espaces, si c'est le cas, le ou les prochains caractères correspondent à la valeur de ton paramètre.
Tu peux toujours utiliser une fonction de comparaison de sous chaines (sous chaine de 3 espaces) ou une fonction qui te permet de repérer la premiere occurence d'un espace.
Hello,
Programme à faire soi-mêmeEnvoyé par maz
Tout bêtement, il s'agit de positionnel. Tu as 2 grandes façons d'organiser/traiter des fichiers texte, enfin les chaines de caractères qui s'y trouvent :
- Le positionnel (ou fixe) : chaque champ est clairement repérable par une position P et une "largeur" L.
- Par séparateur, comme les fichiers CSV (Comma Separated Values) par exemple.
Si comme souvent, le fichier est organisé par lignes distinctes (retours chariot), c'est facile, il suffit de lire le fichier le fichier ligne par ligne avec fgets() par exemple, puis d'aller à la position P désirée en incrémentant un pointeur. Ensuite, des fonctions comme strncpy() et strncmp() peuvent être utilisees pour traiter la largeur du paramètre. Dans le cadre de champs toujours séparés de la même façon sur plusieurs lignes, on pourra utiliser sscanf() ou fscanf().
exple :
On souhaite récupérer paramC, commence au caractère 19 et longueur de 6.
A+
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 char * pos = NULL; char monChamp[10] = { '\0' }; char const ch = "paramA paramB paramC paramD"; pos = ch; /* on se positionne au début de paramC, attention, en C, ça commence à 0*/ pos += 18; /* Extraction des 6 caractères, prévoir un tampon assez grand, faire le contrôle si nécessaire */ strncpy(monChamp, pos, 6); puts(monChamp);
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager