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

Fermé
pierre7221 - 11 juin 2014 à 11:23
[Dal] Messages postés 6203 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 29 janvier 2025 - 11 juin 2014 à 15:20
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 6203 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 29 janvier 2025 1 097
Modifié par [Dal] le 11/06/2014 à 15:34
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 dimanche 23 septembre 2007 Statut Membre Dernière intervention 13 juin 2014 37
11 juin 2014 à 13:03
Bonjour,

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