Récupération d'un entier dans un const char*
pierre7221
-
[Dal] Messages postés 6122 Date d'inscription Statut Contributeur Dernière intervention -
[Dal] Messages postés 6122 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
Pour mon stage je dois créer un logiciel de traçabilité de test de carte électronique. Pour cela je dois récupérer les sauvegarde de différentes machines pour les déplacer dans un répertoire spécial.
Je récupère déjà les noms de sauvegarde dans un const char * NomFichier
NomFichier = file.baseName().toStdString().c_str();
ce qui donne NomFichier = OF123456SN000021
Mais pour créer un dossier au numéro de l'OF je dois d'abord le stocker dans la variable NumOF. Mais comment ne récupérer que ces six chiffres?
Pour mon stage je dois créer un logiciel de traçabilité de test de carte électronique. Pour cela je dois récupérer les sauvegarde de différentes machines pour les déplacer dans un répertoire spécial.
Je récupère déjà les noms de sauvegarde dans un const char * NomFichier
NomFichier = file.baseName().toStdString().c_str();
ce qui donne NomFichier = OF123456SN000021
Mais pour créer un dossier au numéro de l'OF je dois d'abord le stocker dans la variable NumOF. Mais comment ne récupérer que ces six chiffres?
2 réponses
-
Salut pierre7221,
Comme ta chaîne est une chaîne C, tu peux utiliser la fonction Csscanf
pour en extraire ce que tu veux en C pur.
Par exemple, pour extraire le numéro à la suite de OF :
#include <stdio.h> int main (void) { char NomFichier[]="OF123456SN000021"; char NumOF[20] = {'\0'}; if (sscanf(NomFichier,"OF%19[0-9]SN%*s", NumOF)) printf("NumOF -> %s\n", NumOF); else printf("Erreur de format\n"); return 0; }
en supposant que ton numéro OF consiste toujours en un nombre de caractères inférieur à 20, ce qui permet de terminer la chaîne avec'\0'
, compte tenu de l'initialisation faite.
si tu fais tu C++,sscanf
est dans<cstdio>
(là, pour mon exemple, j'ai fait un programme C et j'ai donc inclus<stdio.h>
).
Dal -
Bonjour,
Quand tu dis les 6 chiffres, tu parles de 123456 ou 000021?