Récupération d'un entier dans un const char*

pierre7221 -  
[Dal] Messages postés 6205 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?

2 réponses

[Dal] Messages postés 6205 Date d'inscription   Statut Contributeur Dernière intervention   1 105
 
Salut pierre7221,

Comme ta chaîne est une chaîne C, tu peux utiliser la fonction C
sscanf
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
1
TheElreyatem Messages postés 224 Date d'inscription   Statut Membre Dernière intervention   37
 
Bonjour,

Quand tu dis les 6 chiffres, tu parles de 123456 ou 000021?
0