[C] Analyser une chaine d'un code barre ?

Analyser une chaine d'un code barre ? [C] - C - Programmation

Marsh Posté le 08-07-2004 à 11:52:20    

Salut à tous,
J'aimerais pouvoir analyser la chaine retournée par un lecteur de code barre.  
Par analyse, j'entends pouvoir déterminer quel bout de chaine est numérique, quel autre serait numérique ... afin d'en faire un affichage personalisé (en gros séparer les nombre des caractères)
 
Au boulot, les aurtes stagiaires avaient pas l'air enthousiastes donc j'imagine que ca ne doit pas être facile à faire ?  
Est ce qu'on pourrait me dire comment ca fonctionne en gros, que je me débrouille après, car passer du PHP au C ca fait mal ...
Merci d'avance
 

Reply

Marsh Posté le 08-07-2004 à 11:52:20   

Reply

Marsh Posté le 08-07-2004 à 12:05:46    

burnedsoul a écrit :

Salut à tous,
J'aimerais pouvoir analyser la chaine retournée par un lecteur de code barre.  
Par analyse, j'entends pouvoir déterminer quel bout de chaine est numérique, quel autre serait numérique ... afin d'en faire un affichage personalisé (en gros séparer les nombre des caractères)
 
Au boulot, les aurtes stagiaires avaient pas l'air enthousiastes donc j'imagine que ca ne doit pas être facile à faire ?  
Est ce qu'on pourrait me dire comment ca fonctionne en gros, que je me débrouille après, car passer du PHP au C ca fait mal ...
Merci d'avance


Donc par exemple tu as une chaine qui ressemble à "123a456bc789def" et tu veux afficher "123 a 456 bc 789 def" ?
Tu peux considerer ta chaine comme une alternence de lettres et de chiffres. Tu affiches le premier groupe de lettre (si rien à afficher alors tu affiches rien !) et ensuite tu affiches un espace (si tu as affiché quelque chose), et après tu affiches le groupe de chiffres suivant suivi d'un espace, ...

Code :
  1. int ...()
  2. {
  3. char chaine[TAILLE]; /* Ou char* chaine=NULL; */
  4. ...
  5. /* Mise à jour de la chaine */
  6. ...
  7. while (chaine[i] != '\0')
  8. {
  9.   j=i;
  10.   /* Suite de lettres */
  11.   while (chiffre(chaine[i]) != 1)
  12.    {
  13.     fprintf(stdout, "%c", chaine[i]);
  14.     i++;
  15.    }
  16.   if (chaine[i] == '\0') break;
  17.   if (j < 1) fprintf(stdout, " " );
  18.   /* Suite de chiffres */
  19.   j=i;
  20.   while (chiffre(chaine[i]) == 1)
  21.    {
  22.     fprintf(stdout, "%c", chaine[i]);
  23.     i++;
  24.    }
  25.   if (chaine[i] == '\0') break;
  26.   if (j < 1) fprintf(stdout, " " );
  27. }
  28. fprintf(stdout, "\n" );
  29. ...
  30. return ...
  31. }
  32. int chiffre(char* chaine)
  33. {
  34. if (chaine == NULL) return -1;
  35. if (chaine[i] < '0') return 0;
  36. if (chaine[i] > '9') return 0;
  37. return 1;
  38. }

Le code que je te propose sépare les chiffres des "non chiffres" (lettre ou non). :D
J'utilise la variable j pour savoir si jeviens d'afficher quelque chose ou non.
Si tu as des questions n'hésite pas.


Message édité par darkoli le 08-07-2004 à 12:06:45
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed