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
-
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 ?
-
Bonjour,
As-tu regardé du côté de Strfind ?
http://wiki.sa-mp.com/wiki/Strfind (http://wiki.sa-mp.com/wiki/Strfind)
-
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:
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
-
A quoi ça sert d'extraire un array de 4 cases dans un autre array de 4 cases, je comprends pas.
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);
-
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:
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
-
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:
-
Il s'est juste trompé.
-
Oh que non, j'ai testé mainte et mainte fois et
new string[5]="1234", ssk[128];
format(ssk, sizeof(ssk), "%s", string[2]);
printf(ssk);ça affiche bien "12" :)
-
C'est pas possible, tu as du foirer un truc.
J'ai essayé de mon côté.
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