GTAOnline.net

San Andreas Multiplayer (sa:mp) => Scripting SA-MP [Pawn center] => Discussion démarrée par: Kiloutre le 06 Janvier 2014, 11:50:10

Titre: (Résolu)Extraire les lettres d'une chaîne dans un array ?
Posté par: Kiloutre le 06 Janvier 2014, 11:50:10
Bonjour/Bonjoir, j'ai récemment eu besoin d'extraire les lettres d'une chaîne dans un array, j'ai essayé beaucoup de méthodes et ce pendant deux heures (c'est long pour un seul problème, très long)
J'ai essayé string[2] mais le résultat n'est pas celui désiré, j'ai essayé une boucle strmid sur chaque lettre mais ça bug (le string ne doit faire que 4 caractères, donc pas très long la boucle), j'ai essayé de créer quatre variable pour strmid dans chacune d'entre elles mais ça ne marche pas

Enfin bref je bloque, quelqu'un a une solution ?
Titre: Re : Extraire les lettres d'une chaîne dans un array ?
Posté par: vincentdu90 le 06 Janvier 2014, 12:18:41
Bonjour,

As-tu regardé du côté de Strfind ?

http://wiki.sa-mp.com/wiki/Strfind (http://wiki.sa-mp.com/wiki/Strfind)
Titre: Re : Extraire les lettres d'une chaîne dans un array ?
Posté par: Kiloutre le 06 Janvier 2014, 15:26:39
Strfind ? Je vois pas vraiment comment tu voudrais que j'applique ça pour extraire...
Je ne veux pas passer par diverses méthodes, je veux tout simplement extraire chacune des lettres (il y en a quatres) dans des variables, et ces lettres peuvent varier

Voici un exemple:
Code: (PAWN) [Sélectionner]
new string[4]="1234", nombre[4];
//Méthode pour extraire dans chaque case de l'array nombre
printf("%s %s %s %s", nombre[0], nombre[1], nombre[2], nombre[3]);
//Et la, "1 2 3 4" est affiché dans la console
Titre: Re : Extraire les lettres d'une chaîne dans un array ?
Posté par: Ssk le 06 Janvier 2014, 17:47:29
A quoi ça sert d'extraire un array de 4 cases dans un autre array de 4 cases, je comprends pas.


Code: (pawn) [Sélectionner]
new string[5] = "1234";
new buffer[128] = "";
new i;


for(i = 0; i < sizeof(string); i++) format(buffer, sizeof(buffer), "%s %c", buffer, string[i]);
printf(buffer);
Titre: Re : Extraire les lettres d'une chaîne dans un array ?
Posté par: Kiloutre le 06 Janvier 2014, 18:23:07
Ah bah moi j'utilisais %s à la place de %c, ce qui à priori (ou du moins dans ma méthode) affichait les X premières lettres d'un string
Exemple:
Code: (pawn) [Sélectionner]
new formt[128], letter[5]="1234";
format(formt, sizeof(formt), "%s", letter[2]);
printf(formt); //Affiche "12"
J'vais voir si ça fonctionne IG et j'dis si c'est bon
Edit: Yup, ça marche, résolu
Titre: Re : (Résolu)Extraire les lettres d'une chaîne dans un array ?
Posté par: Gzsume le 06 Janvier 2014, 20:46:42
Désolé de squatter ton topic mais j'ai pas compris un truc là...
Dans ton précédent code, avec letter[2] et l'affichage sous la forme %s, c'est censé afficher une chaîne de caractères... or avec letter[2] c'est censé envoyer l'adresse mémoire de la troisième case... donc afficher 34. Quelqu'un peut m'expliquer vite-fait pourquoi ça lui afficherait 12 et ainsi faire de moi un être moins bête ?

 :huh:
Titre: Re : (Résolu)Extraire les lettres d'une chaîne dans un array ?
Posté par: Ssk le 06 Janvier 2014, 21:18:42
Il s'est juste trompé.
Titre: Re : (Résolu)Extraire les lettres d'une chaîne dans un array ?
Posté par: Kiloutre le 06 Janvier 2014, 22:00:40
Oh que non, j'ai testé mainte et mainte fois et
Code: (pawn) [Sélectionner]
new string[5]="1234", ssk[128];
format(ssk, sizeof(ssk), "%s", string[2]);
printf(ssk);
ça affiche bien "12" :)
Titre: Re : (Résolu)Extraire les lettres d'une chaîne dans un array ?
Posté par: Ssk le 06 Janvier 2014, 22:46:36
C'est pas possible, tu as du foirer un truc.

J'ai essayé de mon côté.

Code: (pawn) [Sélectionner]
new string[128] = "0123456789abcdef";
new buffer[128];

printf(string);
printf(string[2]);

format(buffer, sizeof(buffer), string[2]);
printf(buffer);

format(buffer, sizeof(buffer), "%s", string[2]);
printf(buffer);

En sortie, j'ai.

0123456789abcdef
23456789abcdef
23456789abcdef
23456789abcdef